stupidedi 1.2.5 → 1.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +3 -10
- data/lib/ruby/array.rb +223 -185
- data/lib/ruby/blank.rb +50 -66
- data/lib/ruby/hash.rb +14 -3
- data/lib/ruby/instance_exec.rb +20 -17
- data/lib/ruby/module.rb +53 -43
- data/lib/ruby/object.rb +61 -56
- data/lib/ruby/string.rb +70 -65
- data/lib/ruby/symbol.rb +22 -19
- data/lib/ruby/to_d.rb +71 -70
- data/lib/ruby/to_date.rb +18 -24
- data/lib/ruby/to_time.rb +16 -18
- data/lib/ruby/try.rb +40 -38
- data/lib/stupidedi.rb +3 -6
- data/lib/stupidedi/builder/builder_dsl.rb +2 -1
- data/lib/stupidedi/builder/constraint_table.rb +2 -0
- data/lib/stupidedi/builder/generation.rb +2 -0
- data/lib/stupidedi/builder/identifier_stack.rb +2 -0
- data/lib/stupidedi/builder/instruction.rb +2 -0
- data/lib/stupidedi/builder/instruction_table.rb +2 -0
- data/lib/stupidedi/builder/navigation.rb +2 -0
- data/lib/stupidedi/builder/state_machine.rb +2 -0
- data/lib/stupidedi/builder/states/abstract_state.rb +2 -0
- data/lib/stupidedi/builder/states/failure_state.rb +2 -0
- data/lib/stupidedi/builder/states/functional_group_state.rb +2 -0
- data/lib/stupidedi/builder/states/initial_state.rb +2 -0
- data/lib/stupidedi/builder/states/interchange_state.rb +2 -0
- data/lib/stupidedi/builder/states/loop_state.rb +2 -0
- data/lib/stupidedi/builder/states/table_state.rb +2 -0
- data/lib/stupidedi/builder/states/transaction_set_state.rb +2 -0
- data/lib/stupidedi/builder/states/transmission_state.rb +2 -0
- data/lib/stupidedi/builder/tokenization.rb +2 -0
- data/lib/stupidedi/color.rb +2 -0
- data/lib/stupidedi/config.rb +4 -1
- data/lib/stupidedi/config/code_list_config.rb +5 -1
- data/lib/stupidedi/config/editor_config.rb +5 -1
- data/lib/stupidedi/config/functional_group_config.rb +5 -2
- data/lib/stupidedi/config/interchange_config.rb +9 -5
- data/lib/stupidedi/config/transaction_set_config.rb +5 -1
- data/lib/stupidedi/contrib/003010/guides/PS830.rb +4 -4
- data/lib/stupidedi/contrib/004010/guides/SH856.rb +2 -2
- data/lib/stupidedi/editor.rb +0 -1
- data/lib/stupidedi/editor/00401.rb +2 -0
- data/lib/stupidedi/editor/004010.rb +2 -0
- data/lib/stupidedi/editor/004010/N4.rb +2 -0
- data/lib/stupidedi/editor/00501.rb +2 -0
- data/lib/stupidedi/editor/005010.rb +2 -0
- data/lib/stupidedi/editor/005010/N4.rb +2 -0
- data/lib/stupidedi/editor/X12.rb +2 -0
- data/lib/stupidedi/editor/X222-HC837.rb +2 -0
- data/lib/stupidedi/editor/abstract_ed.rb +2 -0
- data/lib/stupidedi/editor/claim_ack.rb +2 -0
- data/lib/stupidedi/editor/implementation_ack.rb +2 -0
- data/lib/stupidedi/editor/interchange_ack.rb +2 -0
- data/lib/stupidedi/editor/result.rb +2 -0
- data/lib/stupidedi/editor/result_set.rb +2 -0
- data/lib/stupidedi/editor/transaction_set_ed.rb +2 -0
- data/lib/stupidedi/editor/transmission_ed.rb +2 -0
- data/lib/stupidedi/either.rb +2 -0
- data/lib/stupidedi/guides/004010.rb +2 -0
- data/lib/stupidedi/guides/004010/X091A1-HP835.rb +2 -0
- data/lib/stupidedi/guides/004010/element_reqs.rb +2 -0
- data/lib/stupidedi/guides/004010/guide_builder.rb +2 -0
- data/lib/stupidedi/guides/004010/segment_reqs.rb +2 -0
- data/lib/stupidedi/guides/005010.rb +2 -0
- data/lib/stupidedi/guides/005010/X214-HN277.rb +2 -0
- data/lib/stupidedi/guides/005010/X221-HP835.rb +2 -0
- data/lib/stupidedi/guides/005010/X221A1-HP835.rb +2 -0
- data/lib/stupidedi/guides/005010/X222-HC837P.rb +2 -0
- data/lib/stupidedi/guides/005010/X222A1-HC837P.rb +2 -0
- data/lib/stupidedi/guides/005010/X231-FA999.rb +2 -0
- data/lib/stupidedi/guides/005010/X231A1-FA999.rb +2 -0
- data/lib/stupidedi/guides/005010/element_reqs.rb +2 -0
- data/lib/stupidedi/guides/005010/guide_builder.rb +2 -0
- data/lib/stupidedi/guides/005010/segment_reqs.rb +2 -0
- data/lib/stupidedi/inspect.rb +1 -0
- data/lib/stupidedi/reader.rb +2 -1
- data/lib/stupidedi/reader/input.rb +2 -0
- data/lib/stupidedi/reader/input/abstract_input.rb +2 -1
- data/lib/stupidedi/reader/input/delegated_input.rb +2 -1
- data/lib/stupidedi/reader/input/file_input.rb +2 -0
- data/lib/stupidedi/reader/position.rb +2 -0
- data/lib/stupidedi/reader/result.rb +2 -0
- data/lib/stupidedi/reader/segment_dict.rb +2 -0
- data/lib/stupidedi/reader/separators.rb +2 -0
- data/lib/stupidedi/reader/stream_reader.rb +2 -0
- data/lib/stupidedi/reader/token_reader.rb +2 -0
- data/lib/stupidedi/reader/tokens/component_element_tok.rb +2 -0
- data/lib/stupidedi/reader/tokens/composite_element_tok.rb +2 -0
- data/lib/stupidedi/reader/tokens/repeated_element_tok.rb +2 -1
- data/lib/stupidedi/reader/tokens/segment_tok.rb +2 -0
- data/lib/stupidedi/reader/tokens/simple_element_tok.rb +2 -0
- data/lib/stupidedi/schema/abstract_def.rb +2 -0
- data/lib/stupidedi/schema/abstract_use.rb +2 -0
- data/lib/stupidedi/schema/code_list.rb +3 -2
- data/lib/stupidedi/schema/element_def.rb +2 -0
- data/lib/stupidedi/schema/element_req.rb +2 -0
- data/lib/stupidedi/schema/element_use.rb +3 -2
- data/lib/stupidedi/schema/functional_group_def.rb +2 -0
- data/lib/stupidedi/schema/interchange_def.rb +2 -0
- data/lib/stupidedi/schema/loop_def.rb +3 -2
- data/lib/stupidedi/schema/repeat_count.rb +3 -2
- data/lib/stupidedi/schema/segment_def.rb +2 -0
- data/lib/stupidedi/schema/segment_req.rb +2 -0
- data/lib/stupidedi/schema/segment_use.rb +4 -3
- data/lib/stupidedi/schema/syntax_note.rb +2 -0
- data/lib/stupidedi/schema/table_def.rb +2 -0
- data/lib/stupidedi/schema/transaction_set_def.rb +2 -0
- data/lib/stupidedi/sets.rb +1 -0
- data/lib/stupidedi/tail_call.rb +1 -0
- data/lib/stupidedi/thread_local.rb +1 -0
- data/lib/stupidedi/values/abstract_element_val.rb +2 -0
- data/lib/stupidedi/values/abstract_val.rb +2 -0
- data/lib/stupidedi/values/composite_element_val.rb +4 -3
- data/lib/stupidedi/values/functional_group_val.rb +3 -2
- data/lib/stupidedi/values/interchange_val.rb +2 -1
- data/lib/stupidedi/values/invalid_envelope_val.rb +3 -2
- data/lib/stupidedi/values/invalid_segment_val.rb +2 -1
- data/lib/stupidedi/values/loop_val.rb +3 -2
- data/lib/stupidedi/values/repeated_element_val.rb +3 -2
- data/lib/stupidedi/values/segment_val.rb +3 -2
- data/lib/stupidedi/values/segment_val_group.rb +2 -0
- data/lib/stupidedi/values/simple_element_val.rb +3 -2
- data/lib/stupidedi/values/table_val.rb +3 -2
- data/lib/stupidedi/values/transaction_set_val.rb +3 -2
- data/lib/stupidedi/values/transmission_val.rb +2 -0
- data/lib/stupidedi/version.rb +1 -1
- data/lib/stupidedi/versions/functional_groups.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/002001.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/002001/element_defs.rb +2 -1
- data/lib/stupidedi/versions/functional_groups/002001/element_reqs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/002001/element_types.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/002001/element_types/date_val.rb +3 -7
- data/lib/stupidedi/versions/functional_groups/002001/element_types/fixnum_val.rb +5 -12
- data/lib/stupidedi/versions/functional_groups/002001/element_types/float_val.rb +6 -15
- data/lib/stupidedi/versions/functional_groups/002001/element_types/identifier_val.rb +5 -17
- data/lib/stupidedi/versions/functional_groups/002001/element_types/operators.rb +34 -18
- data/lib/stupidedi/versions/functional_groups/002001/element_types/string_val.rb +7 -17
- data/lib/stupidedi/versions/functional_groups/002001/element_types/time_val.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/002001/functional_group_def.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/002001/segment_defs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/002001/segment_reqs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/002001/syntax_notes.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/002001/transaction_set_defs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003010.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003010/element_defs.rb +2 -1
- data/lib/stupidedi/versions/functional_groups/003010/element_reqs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003010/element_types.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003010/element_types/date_val.rb +3 -7
- data/lib/stupidedi/versions/functional_groups/003010/element_types/fixnum_val.rb +4 -10
- data/lib/stupidedi/versions/functional_groups/003010/element_types/float_val.rb +6 -14
- data/lib/stupidedi/versions/functional_groups/003010/element_types/identifier_val.rb +5 -17
- data/lib/stupidedi/versions/functional_groups/003010/element_types/operators.rb +34 -18
- data/lib/stupidedi/versions/functional_groups/003010/element_types/string_val.rb +7 -17
- data/lib/stupidedi/versions/functional_groups/003010/element_types/time_val.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003010/functional_group_def.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003010/segment_defs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003010/segment_reqs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003010/syntax_notes.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003010/transaction_set_defs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003040.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003040/element_defs.rb +2 -1
- data/lib/stupidedi/versions/functional_groups/003040/element_reqs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003040/element_types.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003040/element_types/date_val.rb +3 -7
- data/lib/stupidedi/versions/functional_groups/003040/element_types/fixnum_val.rb +5 -11
- data/lib/stupidedi/versions/functional_groups/003040/element_types/float_val.rb +6 -14
- data/lib/stupidedi/versions/functional_groups/003040/element_types/identifier_val.rb +5 -17
- data/lib/stupidedi/versions/functional_groups/003040/element_types/operators.rb +34 -18
- data/lib/stupidedi/versions/functional_groups/003040/element_types/string_val.rb +7 -17
- data/lib/stupidedi/versions/functional_groups/003040/element_types/time_val.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003040/functional_group_def.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003040/segment_defs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003040/segment_reqs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003040/syntax_notes.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003040/transaction_set_defs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003050.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003050/element_defs.rb +2 -1
- data/lib/stupidedi/versions/functional_groups/003050/element_reqs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003050/element_types.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003050/element_types/date_val.rb +3 -7
- data/lib/stupidedi/versions/functional_groups/003050/element_types/fixnum_val.rb +5 -11
- data/lib/stupidedi/versions/functional_groups/003050/element_types/float_val.rb +6 -14
- data/lib/stupidedi/versions/functional_groups/003050/element_types/identifier_val.rb +5 -17
- data/lib/stupidedi/versions/functional_groups/003050/element_types/operators.rb +34 -18
- data/lib/stupidedi/versions/functional_groups/003050/element_types/string_val.rb +7 -17
- data/lib/stupidedi/versions/functional_groups/003050/element_types/time_val.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003050/functional_group_def.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003050/segment_defs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003050/segment_reqs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003050/syntax_notes.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/003050/transaction_set_defs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/004010.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/004010/element_defs.rb +2 -1
- data/lib/stupidedi/versions/functional_groups/004010/element_reqs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/004010/element_types.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/004010/element_types/date_val.rb +3 -7
- data/lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb +5 -11
- data/lib/stupidedi/versions/functional_groups/004010/element_types/float_val.rb +6 -14
- data/lib/stupidedi/versions/functional_groups/004010/element_types/identifier_val.rb +5 -17
- data/lib/stupidedi/versions/functional_groups/004010/element_types/operators.rb +34 -18
- data/lib/stupidedi/versions/functional_groups/004010/element_types/string_val.rb +7 -17
- data/lib/stupidedi/versions/functional_groups/004010/element_types/time_val.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/004010/functional_group_def.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/004010/segment_defs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/004010/segment_reqs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/004010/syntax_notes.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/004010/transaction_set_defs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/004010/transaction_set_defs/HP835.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010/element_defs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010/element_reqs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010/element_types.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010/element_types/date_val.rb +3 -7
- data/lib/stupidedi/versions/functional_groups/005010/element_types/fixnum_val.rb +4 -12
- data/lib/stupidedi/versions/functional_groups/005010/element_types/float_val.rb +6 -14
- data/lib/stupidedi/versions/functional_groups/005010/element_types/identifier_val.rb +5 -17
- data/lib/stupidedi/versions/functional_groups/005010/element_types/operators.rb +34 -18
- data/lib/stupidedi/versions/functional_groups/005010/element_types/string_val.rb +7 -17
- data/lib/stupidedi/versions/functional_groups/005010/element_types/time_val.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010/functional_group_def.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_reqs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010/syntax_notes.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/FA999.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HB271.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HC837.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HI278.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HN277.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HP835.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HR276.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HS270.rb +2 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/RA820.rb +2 -0
- data/lib/stupidedi/versions/interchanges.rb +2 -0
- data/lib/stupidedi/versions/interchanges/00200.rb +2 -0
- data/lib/stupidedi/versions/interchanges/00200/element_defs.rb +2 -1
- data/lib/stupidedi/versions/interchanges/00200/interchange_def.rb +2 -0
- data/lib/stupidedi/versions/interchanges/00200/segment_defs.rb +2 -0
- data/lib/stupidedi/versions/interchanges/00300.rb +2 -0
- data/lib/stupidedi/versions/interchanges/00300/element_defs.rb +2 -1
- data/lib/stupidedi/versions/interchanges/00300/interchange_def.rb +2 -0
- data/lib/stupidedi/versions/interchanges/00300/segment_defs.rb +2 -0
- data/lib/stupidedi/versions/interchanges/00400.rb +2 -0
- data/lib/stupidedi/versions/interchanges/00400/element_defs.rb +2 -1
- data/lib/stupidedi/versions/interchanges/00400/interchange_def.rb +2 -0
- data/lib/stupidedi/versions/interchanges/00400/segment_defs.rb +2 -0
- data/lib/stupidedi/versions/interchanges/00401.rb +2 -0
- data/lib/stupidedi/versions/interchanges/00401/element_defs.rb +2 -1
- data/lib/stupidedi/versions/interchanges/00401/interchange_def.rb +2 -0
- data/lib/stupidedi/versions/interchanges/00401/segment_defs.rb +2 -0
- data/lib/stupidedi/versions/interchanges/00501.rb +2 -0
- data/lib/stupidedi/versions/interchanges/00501/element_defs.rb +2 -1
- data/lib/stupidedi/versions/interchanges/00501/interchange_def.rb +2 -0
- data/lib/stupidedi/versions/interchanges/00501/segment_defs.rb +2 -0
- data/lib/stupidedi/writer/claredi.rb +2 -0
- data/lib/stupidedi/writer/default.rb +2 -0
- data/lib/stupidedi/zipper.rb +2 -0
- data/lib/stupidedi/zipper/abstract_cursor.rb +2 -0
- data/lib/stupidedi/zipper/dangling_cursor.rb +2 -0
- data/lib/stupidedi/zipper/edited_cursor.rb +2 -0
- data/lib/stupidedi/zipper/memoized_cursor.rb +2 -0
- data/lib/stupidedi/zipper/path.rb +2 -0
- data/lib/stupidedi/zipper/root_cursor.rb +2 -0
- data/spec/examples/integration/parsing.example +1 -0
- data/spec/examples/ruby/array.example +3 -2
- data/spec/examples/ruby/blank.example +15 -14
- data/spec/examples/ruby/count.example +1 -0
- data/spec/examples/ruby/object.example +2 -2
- data/spec/examples/ruby/string.example +1 -0
- data/spec/examples/ruby/symbol.example +2 -21
- data/spec/examples/ruby/to_d.example +1 -0
- data/spec/examples/ruby/try.example +1 -0
- data/spec/examples/stupidedi/reader/input/delegated_input.example +1 -0
- data/spec/examples/stupidedi/reader/token_reader.example +2 -1
- data/spec/examples/stupidedi/versions/005010/element_types/an.example +1 -0
- data/spec/examples/stupidedi/versions/005010/element_types/nn.example +1 -0
- data/spec/examples/stupidedi/versions/005010/element_types/r.example +1 -0
- data/spec/spec_helper.rb +3 -4
- data/spec/support/matchers/navigation_matchers.rb +1 -0
- data/spec/support/quickcheck.rb +2 -1
- data/spec/support/quickcheck/serialized_edi.rb +1 -0
- data/spec/support/rcov.rb +3 -3
- metadata +3 -4
- data/lib/ruby/enumerable.rb +0 -35
@@ -1,4 +1,6 @@
|
|
1
1
|
module Stupidedi
|
2
|
+
using Refinements
|
3
|
+
|
2
4
|
module Versions
|
3
5
|
module FunctionalGroups
|
4
6
|
module ThirtyTen
|
@@ -103,7 +105,6 @@ module Stupidedi
|
|
103
105
|
include Comparable
|
104
106
|
|
105
107
|
# (string any* -> any)
|
106
|
-
extend Forwardable
|
107
108
|
def_delegators :value, :to_d, :to_s, :to_f, :to_c, :to_r, :to_sym, :to_str,
|
108
109
|
:hex, :oct, :ord, :sum, :length, :count, :index, :rindex,
|
109
110
|
:lines, :bytes, :chars, :each, :upto, :split, :scan, :unpack,
|
@@ -138,12 +139,7 @@ module Stupidedi
|
|
138
139
|
def coerce(other)
|
139
140
|
# me, he = other.coerce(self)
|
140
141
|
# me <OP> he
|
141
|
-
|
142
|
-
return copy(:value => other.to_str), self
|
143
|
-
else
|
144
|
-
raise TypeError,
|
145
|
-
"cannot coerce StringVal to #{other.class}"
|
146
|
-
end
|
142
|
+
return copy(:value => other.to_str), self
|
147
143
|
end
|
148
144
|
|
149
145
|
def value
|
@@ -193,7 +189,6 @@ module Stupidedi
|
|
193
189
|
attr_reader :value
|
194
190
|
|
195
191
|
# (string any* -> any)
|
196
|
-
extend Forwardable
|
197
192
|
def_delegators :@value, :to_d, :to_s, :to_f, :to_c, :to_r, :to_sym, :to_str,
|
198
193
|
:hex, :oct, :ord, :sum, :length, :count, :index, :rindex,
|
199
194
|
:lines, :bytes, :chars, :each, :upto, :split, :scan, :unpack,
|
@@ -233,12 +228,7 @@ module Stupidedi
|
|
233
228
|
def coerce(other)
|
234
229
|
# me, he = other.coerce(self)
|
235
230
|
# me <OP> he
|
236
|
-
|
237
|
-
return copy(:value => other.to_str), self
|
238
|
-
else
|
239
|
-
raise TypeError,
|
240
|
-
"cannot coerce StringVal to #{other.class}"
|
241
|
-
end
|
231
|
+
return copy(:value => other.to_str), self
|
242
232
|
end
|
243
233
|
|
244
234
|
def too_long?
|
@@ -376,11 +366,11 @@ module Stupidedi
|
|
376
366
|
def value(object, usage, position)
|
377
367
|
if object.blank?
|
378
368
|
self::Empty.new(usage, position)
|
379
|
-
elsif object.respond_to?(:to_s)
|
380
|
-
self::NonEmpty.new(object.to_s.rstrip, usage, position)
|
381
369
|
else
|
382
|
-
self::
|
370
|
+
self::NonEmpty.new(object.to_s.rstrip, usage, position)
|
383
371
|
end
|
372
|
+
rescue
|
373
|
+
self::Invalid.new(object, usage, position)
|
384
374
|
end
|
385
375
|
|
386
376
|
# @endgroup
|
@@ -1,4 +1,6 @@
|
|
1
1
|
module Stupidedi
|
2
|
+
using Refinements
|
3
|
+
|
2
4
|
module Versions
|
3
5
|
module FunctionalGroups
|
4
6
|
module ThirtyForty
|
@@ -165,7 +167,6 @@ module Stupidedi
|
|
165
167
|
include Comparable
|
166
168
|
|
167
169
|
# (date any* -> any)
|
168
|
-
extend Forwardable
|
169
170
|
def_delegators :@value, :year, :month, :day, :cwday, :cweek, :downto, :upto,
|
170
171
|
:step, :httpdate, :to_s, :to_i, :strftime, :iso8601, :rfc2822,
|
171
172
|
:rfc3339, :rfc822, :leap?, :julian?, :gregorian?, :mday, :mon,
|
@@ -203,12 +204,7 @@ module Stupidedi
|
|
203
204
|
def coerce(other)
|
204
205
|
# me, he = other.coerce(self)
|
205
206
|
# me <OP> he
|
206
|
-
|
207
|
-
return DateVal.value(other, usage, position), self
|
208
|
-
else
|
209
|
-
raise TypeError,
|
210
|
-
"cannot coerce DateVal to #{other.class}"
|
211
|
-
end
|
207
|
+
return DateVal.value(other, usage, position), self
|
212
208
|
end
|
213
209
|
|
214
210
|
def valid?
|
@@ -1,4 +1,6 @@
|
|
1
1
|
module Stupidedi
|
2
|
+
using Refinements
|
3
|
+
|
2
4
|
module Versions
|
3
5
|
module FunctionalGroups
|
4
6
|
module ThirtyForty
|
@@ -193,7 +195,6 @@ module Stupidedi
|
|
193
195
|
# @return [BigDecimal]
|
194
196
|
attr_reader :value
|
195
197
|
|
196
|
-
extend Forwardable
|
197
198
|
def_delegators :@value, :to_i, :to_d, :to_f, :to_r, :to_c
|
198
199
|
|
199
200
|
def initialize(value, usage, position)
|
@@ -212,12 +213,7 @@ module Stupidedi
|
|
212
213
|
def coerce(other)
|
213
214
|
# self', other' = other.coerce(self)
|
214
215
|
# self' * other'
|
215
|
-
|
216
|
-
return copy(:value => other.to_d), self
|
217
|
-
else
|
218
|
-
raise TypeError,
|
219
|
-
"cannot coerce FixnumVal to #{other.class}"
|
220
|
-
end
|
216
|
+
return copy(:value => other.to_d), self
|
221
217
|
end
|
222
218
|
|
223
219
|
def valid?
|
@@ -294,15 +290,13 @@ module Stupidedi
|
|
294
290
|
def value(object, usage, position)
|
295
291
|
if object.blank?
|
296
292
|
self::Empty.new(usage, position)
|
297
|
-
|
293
|
+
else
|
298
294
|
# The number of fractional digits is implied by usage.precision
|
299
295
|
factor = 10 ** usage.definition.precision
|
300
296
|
|
301
297
|
self::NonEmpty.new(object.to_d / factor, usage, position)
|
302
|
-
else
|
303
|
-
self::Invalid.new(object, usage, position)
|
304
298
|
end
|
305
|
-
rescue
|
299
|
+
rescue
|
306
300
|
self::Invalid.new(object, usage, position)
|
307
301
|
end
|
308
302
|
|
@@ -1,4 +1,6 @@
|
|
1
1
|
module Stupidedi
|
2
|
+
using Refinements
|
3
|
+
|
2
4
|
module Versions
|
3
5
|
module FunctionalGroups
|
4
6
|
module ThirtyForty
|
@@ -182,7 +184,6 @@ module Stupidedi
|
|
182
184
|
# @return [BigDecimal]
|
183
185
|
attr_reader :value
|
184
186
|
|
185
|
-
extend Forwardable
|
186
187
|
def_delegators :@value, :to_i, :to_d, :to_f, :to_r, :to_c
|
187
188
|
|
188
189
|
|
@@ -202,12 +203,7 @@ module Stupidedi
|
|
202
203
|
def coerce(other)
|
203
204
|
# self', other' = other.coerce(self)
|
204
205
|
# self' * other'
|
205
|
-
|
206
|
-
return copy(:value => other.to_d), self
|
207
|
-
else
|
208
|
-
raise TypeError,
|
209
|
-
"cannot coerce FloatVal to #{other.class}"
|
210
|
-
end
|
206
|
+
return copy(:value => other.to_d), self
|
211
207
|
end
|
212
208
|
|
213
209
|
def valid?
|
@@ -328,15 +324,11 @@ module Stupidedi
|
|
328
324
|
def value(object, usage, position)
|
329
325
|
if object.blank?
|
330
326
|
self::Empty.new(usage, position)
|
331
|
-
elsif object.respond_to?(:to_d)
|
332
|
-
begin
|
333
|
-
self::NonEmpty.new(object.to_d, usage, position)
|
334
|
-
rescue ArgumentError
|
335
|
-
self::Invalid.new(object, usage, position)
|
336
|
-
end
|
337
327
|
else
|
338
|
-
self::
|
328
|
+
self::NonEmpty.new(object.to_d, usage, position)
|
339
329
|
end
|
330
|
+
rescue ArgumentError
|
331
|
+
self::Invalid.new(object, usage, position)
|
340
332
|
end
|
341
333
|
|
342
334
|
# @endgroup
|
@@ -1,4 +1,6 @@
|
|
1
1
|
module Stupidedi
|
2
|
+
using Refinements
|
3
|
+
|
2
4
|
module Versions
|
3
5
|
module FunctionalGroups
|
4
6
|
module ThirtyForty
|
@@ -144,7 +146,6 @@ module Stupidedi
|
|
144
146
|
include Comparable
|
145
147
|
|
146
148
|
# (string any* -> any)
|
147
|
-
extend Forwardable
|
148
149
|
def_delegators :value, :to_d, :to_s, :to_f, :to_c, :to_r, :to_sym, :to_str,
|
149
150
|
:hex, :oct, :ord, :sum, :length, :count, :index, :rindex,
|
150
151
|
:lines, :bytes, :chars, :each, :upto, :split, :scan, :unpack,
|
@@ -179,12 +180,7 @@ module Stupidedi
|
|
179
180
|
def coerce(other)
|
180
181
|
# me, he = other.coerce(self)
|
181
182
|
# me <OP> he
|
182
|
-
|
183
|
-
return copy(:value => other.to_str), self
|
184
|
-
else
|
185
|
-
raise TypeError,
|
186
|
-
"cannot coerce IdentifierVal to #{other.class}"
|
187
|
-
end
|
183
|
+
return copy(:value => other.to_str), self
|
188
184
|
end
|
189
185
|
|
190
186
|
def value
|
@@ -233,7 +229,6 @@ module Stupidedi
|
|
233
229
|
# @return [String]
|
234
230
|
attr_reader :value
|
235
231
|
# (string any* -> any)
|
236
|
-
extend Forwardable
|
237
232
|
def_delegators :value, :to_d, :to_s, :to_f, :to_c, :to_r, :to_sym, :to_str,
|
238
233
|
:hex, :oct, :ord, :sum, :length, :count, :index, :rindex,
|
239
234
|
:lines, :bytes, :chars, :each, :upto, :split, :scan, :unpack,
|
@@ -273,12 +268,7 @@ module Stupidedi
|
|
273
268
|
def coerce(other)
|
274
269
|
# me, he = other.coerce(self)
|
275
270
|
# me <OP> he
|
276
|
-
|
277
|
-
return copy(:value => other.to_str), self
|
278
|
-
else
|
279
|
-
raise TypeError,
|
280
|
-
"cannot coerce IdentifierVal to #{other.class}"
|
281
|
-
end
|
271
|
+
return copy(:value => other.to_str), self
|
282
272
|
end
|
283
273
|
|
284
274
|
def valid?
|
@@ -344,10 +334,8 @@ module Stupidedi
|
|
344
334
|
def value(object, usage, position)
|
345
335
|
if object.blank?
|
346
336
|
self::Empty.new(usage, position)
|
347
|
-
elsif object.respond_to?(:to_s)
|
348
|
-
self::NonEmpty.new(object.to_s.rstrip, usage, position)
|
349
337
|
else
|
350
|
-
self::
|
338
|
+
self::NonEmpty.new(object.to_s.rstrip, usage, position)
|
351
339
|
end
|
352
340
|
rescue
|
353
341
|
self::Invalid.new(object, usage, position)
|
@@ -1,4 +1,6 @@
|
|
1
1
|
module Stupidedi
|
2
|
+
using Refinements
|
3
|
+
|
2
4
|
module Versions
|
3
5
|
module FunctionalGroups
|
4
6
|
module ThirtyForty
|
@@ -13,7 +15,7 @@ module Stupidedi
|
|
13
15
|
ops.each do |op|
|
14
16
|
class_eval(<<-RUBY, file, line.to_i - 1)
|
15
17
|
def #{op}(&block)
|
16
|
-
copy(:value => value
|
18
|
+
copy(:value => value.#{op}(&block))
|
17
19
|
end
|
18
20
|
RUBY
|
19
21
|
end
|
@@ -39,17 +41,24 @@ module Stupidedi
|
|
39
41
|
"must pass :coerce => :method"
|
40
42
|
end
|
41
43
|
|
44
|
+
# Note that we can't test respond_to?(coerce) because coerce is
|
45
|
+
# often a refinement method, like #to_d, #to_time, etc. Currently
|
46
|
+
# respond_to? returns false on refinment methods, so we just call
|
47
|
+
# the method and assume a NoMethodError is due to coerce (hopefully
|
48
|
+
# not some other missing method)
|
42
49
|
ops.each do |op|
|
43
50
|
class_eval(<<-RUBY, file, line.to_i - 1)
|
44
51
|
def #{op}(other, &block)
|
45
|
-
|
46
|
-
copy(:value => value
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
52
|
+
begin
|
53
|
+
copy(:value => value.#{op}(other.#{coerce}, &block))
|
54
|
+
rescue NoMethodError
|
55
|
+
begin
|
56
|
+
me, he = other.coerce(self)
|
57
|
+
copy(:value => me.#{op}(he, &block).#{coerce})
|
58
|
+
rescue NoMethodError
|
59
|
+
raise TypeError,
|
60
|
+
"cannot coerce \#{other.class} to \#{self.class}"
|
61
|
+
end
|
53
62
|
end
|
54
63
|
end
|
55
64
|
RUBY
|
@@ -76,17 +85,24 @@ module Stupidedi
|
|
76
85
|
"must pass :coerce => :method"
|
77
86
|
end
|
78
87
|
|
88
|
+
# Note that we can't test respond_to?(coerce) because coerce is
|
89
|
+
# often a refinement method, like #to_d, #to_time, etc. Currently
|
90
|
+
# respond_to? returns false on refinment methods, so we just call
|
91
|
+
# the method and assume a NoMethodError is due to coerce (hopefully
|
92
|
+
# not some other missing method)
|
79
93
|
ops.each do |op|
|
80
94
|
class_eval(<<-RUBY, file, line.to_i - 1)
|
81
95
|
def #{op}(other, &block)
|
82
|
-
|
83
|
-
value
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
96
|
+
begin
|
97
|
+
value.#{op}(other.#{coerce}, &block)
|
98
|
+
rescue NoMethodError
|
99
|
+
begin
|
100
|
+
me, he = other.coerce(self)
|
101
|
+
me.#{op}(he, &block)
|
102
|
+
rescue NoMethodError
|
103
|
+
raise TypeError,
|
104
|
+
"cannot coerce \#{other.class} to \#{self.class}"
|
105
|
+
end
|
90
106
|
end
|
91
107
|
end
|
92
108
|
RUBY
|
@@ -101,7 +117,7 @@ module Stupidedi
|
|
101
117
|
ops.each do |op|
|
102
118
|
class_eval(<<-RUBY, file, line.to_i - 1)
|
103
119
|
def #{op}(*args, &block)
|
104
|
-
copy(:value => value
|
120
|
+
copy(:value => value.#{op}(*args, &block))
|
105
121
|
end
|
106
122
|
RUBY
|
107
123
|
end
|
@@ -1,4 +1,6 @@
|
|
1
1
|
module Stupidedi
|
2
|
+
using Refinements
|
3
|
+
|
2
4
|
module Versions
|
3
5
|
module FunctionalGroups
|
4
6
|
module ThirtyForty
|
@@ -103,7 +105,6 @@ module Stupidedi
|
|
103
105
|
include Comparable
|
104
106
|
|
105
107
|
# (string any* -> any)
|
106
|
-
extend Forwardable
|
107
108
|
def_delegators :value, :to_d, :to_s, :to_f, :to_c, :to_r, :to_sym, :to_str,
|
108
109
|
:hex, :oct, :ord, :sum, :length, :count, :index, :rindex,
|
109
110
|
:lines, :bytes, :chars, :each, :upto, :split, :scan, :unpack,
|
@@ -138,12 +139,7 @@ module Stupidedi
|
|
138
139
|
def coerce(other)
|
139
140
|
# me, he = other.coerce(self)
|
140
141
|
# me <OP> he
|
141
|
-
|
142
|
-
return copy(:value => other.to_str), self
|
143
|
-
else
|
144
|
-
raise TypeError,
|
145
|
-
"cannot coerce StringVal to #{other.class}"
|
146
|
-
end
|
142
|
+
return copy(:value => other.to_str), self
|
147
143
|
end
|
148
144
|
|
149
145
|
def value
|
@@ -193,7 +189,6 @@ module Stupidedi
|
|
193
189
|
attr_reader :value
|
194
190
|
|
195
191
|
# (string any* -> any)
|
196
|
-
extend Forwardable
|
197
192
|
def_delegators :@value, :to_d, :to_s, :to_f, :to_c, :to_r, :to_sym, :to_str,
|
198
193
|
:hex, :oct, :ord, :sum, :length, :count, :index, :rindex,
|
199
194
|
:lines, :bytes, :chars, :each, :upto, :split, :scan, :unpack,
|
@@ -234,12 +229,7 @@ module Stupidedi
|
|
234
229
|
def coerce(other)
|
235
230
|
# me, he = other.coerce(self)
|
236
231
|
# me <OP> he
|
237
|
-
|
238
|
-
return copy(:value => other.to_str), self
|
239
|
-
else
|
240
|
-
raise TypeError,
|
241
|
-
"cannot coerce StringVal to #{other.class}"
|
242
|
-
end
|
232
|
+
return copy(:value => other.to_str), self
|
243
233
|
end
|
244
234
|
|
245
235
|
def too_long?
|
@@ -377,11 +367,11 @@ module Stupidedi
|
|
377
367
|
def value(object, usage, position)
|
378
368
|
if object.blank?
|
379
369
|
self::Empty.new(usage, position)
|
380
|
-
elsif object.respond_to?(:to_s)
|
381
|
-
self::NonEmpty.new(object.to_s.rstrip, usage, position)
|
382
370
|
else
|
383
|
-
self::
|
371
|
+
self::NonEmpty.new(object.to_s.rstrip, usage, position)
|
384
372
|
end
|
373
|
+
rescue NoMethodError
|
374
|
+
self::Invalid.new(object, usage, position)
|
385
375
|
end
|
386
376
|
|
387
377
|
# @endgroup
|