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 ThirtyFifty
|
@@ -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,
|
@@ -204,12 +205,7 @@ module Stupidedi
|
|
204
205
|
def coerce(other)
|
205
206
|
# me, he = other.coerce(self)
|
206
207
|
# me <OP> he
|
207
|
-
|
208
|
-
return DateVal.value(other, usage, position), self
|
209
|
-
else
|
210
|
-
raise TypeError,
|
211
|
-
"cannot coerce DateVal to #{other.class}"
|
212
|
-
end
|
208
|
+
return DateVal.value(other, usage, position), self
|
213
209
|
end
|
214
210
|
|
215
211
|
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 ThirtyFifty
|
@@ -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 ThirtyFifty
|
@@ -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
|
|
@@ -203,12 +204,7 @@ module Stupidedi
|
|
203
204
|
def coerce(other)
|
204
205
|
# self', other' = other.coerce(self)
|
205
206
|
# self' * other'
|
206
|
-
|
207
|
-
return copy(:value => other.to_d), self
|
208
|
-
else
|
209
|
-
raise TypeError,
|
210
|
-
"cannot coerce FloatVal to #{other.class}"
|
211
|
-
end
|
207
|
+
return copy(:value => other.to_d), self
|
212
208
|
end
|
213
209
|
|
214
210
|
def valid?
|
@@ -329,15 +325,11 @@ module Stupidedi
|
|
329
325
|
def value(object, usage, position)
|
330
326
|
if object.blank?
|
331
327
|
self::Empty.new(usage, position)
|
332
|
-
elsif object.respond_to?(:to_d)
|
333
|
-
begin
|
334
|
-
self::NonEmpty.new(object.to_d, usage, position)
|
335
|
-
rescue ArgumentError
|
336
|
-
self::Invalid.new(object, usage, position)
|
337
|
-
end
|
338
328
|
else
|
339
|
-
self::
|
329
|
+
self::NonEmpty.new(object.to_d, usage, position)
|
340
330
|
end
|
331
|
+
rescue
|
332
|
+
self::Invalid.new(object, usage, position)
|
341
333
|
end
|
342
334
|
|
343
335
|
# @endgroup
|
@@ -1,4 +1,6 @@
|
|
1
1
|
module Stupidedi
|
2
|
+
using Refinements
|
3
|
+
|
2
4
|
module Versions
|
3
5
|
module FunctionalGroups
|
4
6
|
module ThirtyFifty
|
@@ -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,
|
@@ -274,12 +269,7 @@ module Stupidedi
|
|
274
269
|
def coerce(other)
|
275
270
|
# me, he = other.coerce(self)
|
276
271
|
# me <OP> he
|
277
|
-
|
278
|
-
return copy(:value => other.to_str), self
|
279
|
-
else
|
280
|
-
raise TypeError,
|
281
|
-
"cannot coerce IdentifierVal to #{other.class}"
|
282
|
-
end
|
272
|
+
return copy(:value => other.to_str), self
|
283
273
|
end
|
284
274
|
|
285
275
|
def valid?
|
@@ -345,10 +335,8 @@ module Stupidedi
|
|
345
335
|
def value(object, usage, position)
|
346
336
|
if object.blank?
|
347
337
|
self::Empty.new(usage, position)
|
348
|
-
elsif object.respond_to?(:to_s)
|
349
|
-
self::NonEmpty.new(object.to_s.rstrip, usage, position)
|
350
338
|
else
|
351
|
-
self::
|
339
|
+
self::NonEmpty.new(object.to_s.rstrip, usage, position)
|
352
340
|
end
|
353
341
|
rescue
|
354
342
|
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 ThirtyFifty
|
@@ -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 ThirtyFifty
|
@@ -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
|