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 FiftyTen
|
@@ -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 FiftyTen
|
@@ -193,11 +195,8 @@ 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
|
-
|
201
200
|
def initialize(value, usage, position)
|
202
201
|
@value = value
|
203
202
|
super(usage, position)
|
@@ -214,12 +213,7 @@ module Stupidedi
|
|
214
213
|
def coerce(other)
|
215
214
|
# self', other' = other.coerce(self)
|
216
215
|
# self' * other'
|
217
|
-
|
218
|
-
return copy(:value => other.to_d), self
|
219
|
-
else
|
220
|
-
raise TypeError,
|
221
|
-
"cannot coerce FixnumVal to #{other.class}"
|
222
|
-
end
|
216
|
+
return copy(:value => other.to_d), self
|
223
217
|
end
|
224
218
|
|
225
219
|
def valid?
|
@@ -296,13 +290,11 @@ module Stupidedi
|
|
296
290
|
def value(object, usage, position)
|
297
291
|
if object.blank?
|
298
292
|
self::Empty.new(usage, position)
|
299
|
-
|
293
|
+
else
|
300
294
|
# The number of fractional digits is implied by usage.precision
|
301
295
|
factor = 10 ** usage.definition.precision
|
302
296
|
|
303
297
|
self::NonEmpty.new(object.to_d / factor, usage, position)
|
304
|
-
else
|
305
|
-
self::Invalid.new(object, usage, position)
|
306
298
|
end
|
307
299
|
rescue ArgumentError
|
308
300
|
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 FiftyTen
|
@@ -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 FiftyTen
|
@@ -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 FiftyTen
|
@@ -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 FiftyTen
|
@@ -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
|