lib/pione/model/list.rb in pione-0.1.3 vs lib/pione/model/list.rb in pione-0.1.4

- old
+ new

@@ -1,11 +1,11 @@ module Pione::Model # PioneList is a list that include same type elements. class PioneList < BasicModel extend Forwardable - set_pione_model_type TypeList[TypeAny] + set_pione_model_type TypeList[TypeSequence] attr_reader :values def_delegators :@values, :[], :size, :empty? # Creates a list with elements. @@ -25,11 +25,11 @@ # Returns pione model type corresponding to the elements. # @return [TypeList] # the type def pione_model_type - type = @values.empty? ? TypeAny : @values.first.pione_model_type + type = @values.empty? ? TypeSequence : @values.first.pione_model_type TypeList.new(type) end # Returns new list which appended the element. # @param [BasicModel] elt @@ -67,38 +67,42 @@ # # pione method # - define_pione_method("==", [TypeList[TypeAny]], TypeBoolean) do |rec, other| + define_pione_method("==", [TypeList[TypeSequence]], TypeBoolean) do |rec, other| PioneBoolean.new(rec.values == other.values) end - define_pione_method("!=", [TypeList[TypeAny]], TypeBoolean) do |rec, other| + define_pione_method("!=", [TypeList[TypeSequence]], TypeBoolean) do |rec, other| PioneBoolean.not(rec.call_pione_method("==", other)) end - define_pione_method("+", [TypeList[TypeAny]], TypeList[TypeAny]) do |rec, other| + define_pione_method("+", [TypeList[TypeSequence]], TypeList[TypeSequence]) do |rec, other| PioneList.new(rec.values + other.values) end - define_pione_method("-", [TypeList[TypeAny]], TypeList[TypeAny]) do |rec, other| + define_pione_method("-", [TypeList[TypeSequence]], TypeList[TypeSequence]) do |rec, other| PioneList.new(rec.values - other.values) end - define_pione_method("*", [TypeList[TypeAny]], TypeList[TypeAny]) do |rec, other| + define_pione_method("*", [TypeList[TypeSequence]], TypeList[TypeSequence]) do |rec, other| PioneList.new(rec.values * other.values) end define_pione_method("empty?", [], TypeBoolean) do |rec| PioneBoolean.new(rec.empty?) end - define_pione_method("[]", [TypeInteger], TypeAny) do |rec, i| + define_pione_method("[]", [TypeInteger], TypeSequence) do |rec, i| rec.values[i.value] end define_pione_method("as_string", [], TypeString) do |rec| PioneString.new(rec.values.to_s) + end + + define_pione_method("str", [], TypeString) do |rec| + rec.call_pione_method("as_string") end end end