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 FortyTen
|
@@ -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,
|
@@ -205,12 +206,7 @@ module Stupidedi
|
|
205
206
|
def coerce(other)
|
206
207
|
# me, he = other.coerce(self)
|
207
208
|
# me <OP> he
|
208
|
-
|
209
|
-
return DateVal.value(other, usage, position), self
|
210
|
-
else
|
211
|
-
raise TypeError,
|
212
|
-
"cannot coerce DateVal to #{other.class}"
|
213
|
-
end
|
209
|
+
return DateVal.value(other, usage, position), self
|
214
210
|
end
|
215
211
|
|
216
212
|
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 FortyTen
|
@@ -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
|
|
@@ -213,12 +214,7 @@ module Stupidedi
|
|
213
214
|
def coerce(other)
|
214
215
|
# self', other' = other.coerce(self)
|
215
216
|
# self' * other'
|
216
|
-
|
217
|
-
return copy(:value => other.to_d), self
|
218
|
-
else
|
219
|
-
raise TypeError,
|
220
|
-
"cannot coerce FixnumVal to #{other.class}"
|
221
|
-
end
|
217
|
+
return copy(:value => other.to_d), self
|
222
218
|
end
|
223
219
|
|
224
220
|
def valid?
|
@@ -295,15 +291,13 @@ module Stupidedi
|
|
295
291
|
def value(object, usage, position)
|
296
292
|
if object.blank?
|
297
293
|
self::Empty.new(usage, position)
|
298
|
-
|
294
|
+
else
|
299
295
|
# The number of fractional digits is implied by usage.precision
|
300
296
|
factor = 10 ** usage.definition.precision
|
301
297
|
|
302
298
|
self::NonEmpty.new(object.to_d / factor, usage, position)
|
303
|
-
else
|
304
|
-
self::Invalid.new(object, usage, position)
|
305
299
|
end
|
306
|
-
rescue
|
300
|
+
rescue
|
307
301
|
self::Invalid.new(object, usage, position)
|
308
302
|
end
|
309
303
|
|
@@ -1,4 +1,6 @@
|
|
1
1
|
module Stupidedi
|
2
|
+
using Refinements
|
3
|
+
|
2
4
|
module Versions
|
3
5
|
module FunctionalGroups
|
4
6
|
module FortyTen
|
@@ -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
|
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 FortyTen
|
@@ -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,
|
@@ -180,12 +181,7 @@ module Stupidedi
|
|
180
181
|
def coerce(other)
|
181
182
|
# me, he = other.coerce(self)
|
182
183
|
# me <OP> he
|
183
|
-
|
184
|
-
return copy(:value => other.to_str), self
|
185
|
-
else
|
186
|
-
raise TypeError,
|
187
|
-
"cannot coerce IdentifierVal to #{other.class}"
|
188
|
-
end
|
184
|
+
return copy(:value => other.to_str), self
|
189
185
|
end
|
190
186
|
|
191
187
|
def value
|
@@ -234,7 +230,6 @@ module Stupidedi
|
|
234
230
|
# @return [String]
|
235
231
|
attr_reader :value
|
236
232
|
# (string any* -> any)
|
237
|
-
extend Forwardable
|
238
233
|
def_delegators :value, :to_d, :to_s, :to_f, :to_c, :to_r, :to_sym, :to_str,
|
239
234
|
:hex, :oct, :ord, :sum, :length, :count, :index, :rindex,
|
240
235
|
:lines, :bytes, :chars, :each, :upto, :split, :scan, :unpack,
|
@@ -275,12 +270,7 @@ module Stupidedi
|
|
275
270
|
def coerce(other)
|
276
271
|
# me, he = other.coerce(self)
|
277
272
|
# me <OP> he
|
278
|
-
|
279
|
-
return copy(:value => other.to_str), self
|
280
|
-
else
|
281
|
-
raise TypeError,
|
282
|
-
"cannot coerce IdentifierVal to #{other.class}"
|
283
|
-
end
|
273
|
+
return copy(:value => other.to_str), self
|
284
274
|
end
|
285
275
|
|
286
276
|
def valid?
|
@@ -346,10 +336,8 @@ module Stupidedi
|
|
346
336
|
def value(object, usage, position)
|
347
337
|
if object.blank?
|
348
338
|
self::Empty.new(usage, position)
|
349
|
-
elsif object.respond_to?(:to_s)
|
350
|
-
self::NonEmpty.new(object.to_s.rstrip, usage, position)
|
351
339
|
else
|
352
|
-
self::
|
340
|
+
self::NonEmpty.new(object.to_s.rstrip, usage, position)
|
353
341
|
end
|
354
342
|
rescue
|
355
343
|
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 FortyTen
|
@@ -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 FortyTen
|
@@ -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,
|
@@ -139,12 +140,7 @@ module Stupidedi
|
|
139
140
|
def coerce(other)
|
140
141
|
# me, he = other.coerce(self)
|
141
142
|
# me <OP> he
|
142
|
-
|
143
|
-
return copy(:value => other.to_str), self
|
144
|
-
else
|
145
|
-
raise TypeError,
|
146
|
-
"cannot coerce StringVal to #{other.class}"
|
147
|
-
end
|
143
|
+
return copy(:value => other.to_str), self
|
148
144
|
end
|
149
145
|
|
150
146
|
def value
|
@@ -194,7 +190,6 @@ module Stupidedi
|
|
194
190
|
attr_reader :value
|
195
191
|
|
196
192
|
# (string any* -> any)
|
197
|
-
extend Forwardable
|
198
193
|
def_delegators :@value, :to_d, :to_s, :to_f, :to_c, :to_r, :to_sym, :to_str,
|
199
194
|
:hex, :oct, :ord, :sum, :length, :count, :index, :rindex,
|
200
195
|
:lines, :bytes, :chars, :each, :upto, :split, :scan, :unpack,
|
@@ -235,12 +230,7 @@ module Stupidedi
|
|
235
230
|
def coerce(other)
|
236
231
|
# me, he = other.coerce(self)
|
237
232
|
# me <OP> he
|
238
|
-
|
239
|
-
return copy(:value => other.to_str), self
|
240
|
-
else
|
241
|
-
raise TypeError,
|
242
|
-
"cannot coerce StringVal to #{other.class}"
|
243
|
-
end
|
233
|
+
return copy(:value => other.to_str), self
|
244
234
|
end
|
245
235
|
|
246
236
|
def too_long?
|
@@ -378,11 +368,11 @@ module Stupidedi
|
|
378
368
|
def value(object, usage, position)
|
379
369
|
if object.blank?
|
380
370
|
self::Empty.new(usage, position)
|
381
|
-
elsif object.respond_to?(:to_s)
|
382
|
-
self::NonEmpty.new(object.to_s.rstrip, usage, position)
|
383
371
|
else
|
384
|
-
self::
|
372
|
+
self::NonEmpty.new(object.to_s.rstrip, usage, position)
|
385
373
|
end
|
374
|
+
rescue
|
375
|
+
self::Invalid.new(object, usage, position)
|
386
376
|
end
|
387
377
|
|
388
378
|
# @endgroup
|