switchyard 7.0.0

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.
Files changed (129) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/project-build.yml +71 -0
  3. data/.gitignore +24 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +101 -0
  6. data/.solargraph.yml +11 -0
  7. data/Appraisals +7 -0
  8. data/CHANGELOG.md +303 -0
  9. data/CODE_OF_CONDUCT.md +22 -0
  10. data/Gemfile +4 -0
  11. data/LICENSE +22 -0
  12. data/README.md +1663 -0
  13. data/Rakefile +12 -0
  14. data/VERSION +1 -0
  15. data/audit/bench.rb +99 -0
  16. data/audit/verify_findings.rb +172 -0
  17. data/gemfiles/dry_inflector_0_2_1.gemfile +5 -0
  18. data/gemfiles/i18n_1_8_11.gemfile +5 -0
  19. data/lib/switchyard/action.rb +145 -0
  20. data/lib/switchyard/configuration.rb +36 -0
  21. data/lib/switchyard/context/key_verifier.rb +124 -0
  22. data/lib/switchyard/context.rb +208 -0
  23. data/lib/switchyard/deprecations.rb +26 -0
  24. data/lib/switchyard/errors.rb +9 -0
  25. data/lib/switchyard/functional/enum.rb +286 -0
  26. data/lib/switchyard/functional/maybe.rb +21 -0
  27. data/lib/switchyard/functional/monad.rb +77 -0
  28. data/lib/switchyard/functional/null.rb +88 -0
  29. data/lib/switchyard/functional/option.rb +100 -0
  30. data/lib/switchyard/functional/result.rb +129 -0
  31. data/lib/switchyard/functional/sequencer.rb +144 -0
  32. data/lib/switchyard/i18n/localization_adapter.rb +50 -0
  33. data/lib/switchyard/localization_adapter.rb +39 -0
  34. data/lib/switchyard/localization_map.rb +9 -0
  35. data/lib/switchyard/organizer/execute.rb +16 -0
  36. data/lib/switchyard/organizer/iterate.rb +30 -0
  37. data/lib/switchyard/organizer/reduce_case.rb +50 -0
  38. data/lib/switchyard/organizer/reduce_if.rb +19 -0
  39. data/lib/switchyard/organizer/reduce_if_else.rb +23 -0
  40. data/lib/switchyard/organizer/reduce_until.rb +22 -0
  41. data/lib/switchyard/organizer/reduce_while.rb +31 -0
  42. data/lib/switchyard/organizer/scoped_reducable.rb +15 -0
  43. data/lib/switchyard/organizer/with_callback.rb +28 -0
  44. data/lib/switchyard/organizer/with_reducer.rb +81 -0
  45. data/lib/switchyard/organizer/with_reducer_factory.rb +20 -0
  46. data/lib/switchyard/organizer/with_reducer_log_decorator.rb +111 -0
  47. data/lib/switchyard/organizer.rb +129 -0
  48. data/lib/switchyard/testing/context_factory.rb +48 -0
  49. data/lib/switchyard/testing.rb +3 -0
  50. data/lib/switchyard/version.rb +5 -0
  51. data/lib/switchyard.rb +36 -0
  52. data/resources/fail_actions.png +0 -0
  53. data/resources/light-service.png +0 -0
  54. data/resources/organizer_and_actions.png +0 -0
  55. data/resources/skip_actions.png +0 -0
  56. data/spec/acceptance/add_numbers_spec.rb +11 -0
  57. data/spec/acceptance/after_actions_spec.rb +87 -0
  58. data/spec/acceptance/around_each_spec.rb +19 -0
  59. data/spec/acceptance/before_actions_spec.rb +115 -0
  60. data/spec/acceptance/custom_log_from_organizer_spec.rb +61 -0
  61. data/spec/acceptance/deprecation_warnings_spec.rb +82 -0
  62. data/spec/acceptance/fail_spec.rb +52 -0
  63. data/spec/acceptance/log_from_organizer_spec.rb +154 -0
  64. data/spec/acceptance/message_localization_spec.rb +119 -0
  65. data/spec/acceptance/organizer/add_aliases_spec.rb +28 -0
  66. data/spec/acceptance/organizer/add_to_context_spec.rb +54 -0
  67. data/spec/acceptance/organizer/around_each_with_reduce_if_spec.rb +42 -0
  68. data/spec/acceptance/organizer/context_failure_and_skipping_spec.rb +90 -0
  69. data/spec/acceptance/organizer/execute_spec.rb +67 -0
  70. data/spec/acceptance/organizer/iterate_spec.rb +44 -0
  71. data/spec/acceptance/organizer/reduce_case_spec.rb +65 -0
  72. data/spec/acceptance/organizer/reduce_if_else_spec.rb +60 -0
  73. data/spec/acceptance/organizer/reduce_if_spec.rb +89 -0
  74. data/spec/acceptance/organizer/reduce_until_spec.rb +49 -0
  75. data/spec/acceptance/organizer/reduce_while_spec.rb +96 -0
  76. data/spec/acceptance/organizer/with_callback_spec.rb +113 -0
  77. data/spec/acceptance/organizer_entry_point_spec.rb +35 -0
  78. data/spec/acceptance/rollback_spec.rb +183 -0
  79. data/spec/acceptance/skip_all_remaining_spec.rb +139 -0
  80. data/spec/acceptance/testing/context_factory_spec.rb +54 -0
  81. data/spec/action_expected_keys_spec.rb +63 -0
  82. data/spec/action_expects_and_promises_spec.rb +97 -0
  83. data/spec/action_optional_expected_keys_spec.rb +107 -0
  84. data/spec/action_promised_keys_spec.rb +126 -0
  85. data/spec/action_spec.rb +97 -0
  86. data/spec/context/inspect_spec.rb +52 -0
  87. data/spec/context_spec.rb +301 -0
  88. data/spec/examples/amount_spec.rb +77 -0
  89. data/spec/examples/controller_spec.rb +63 -0
  90. data/spec/examples/validate_address_spec.rb +38 -0
  91. data/spec/i18n_localization_adapter_spec.rb +83 -0
  92. data/spec/lib/deterministic/class_mixin_spec.rb +24 -0
  93. data/spec/lib/deterministic/currify_spec.rb +90 -0
  94. data/spec/lib/deterministic/monad_axioms.rb +46 -0
  95. data/spec/lib/deterministic/monad_spec.rb +47 -0
  96. data/spec/lib/deterministic/null_spec.rb +65 -0
  97. data/spec/lib/deterministic/option_spec.rb +140 -0
  98. data/spec/lib/deterministic/result/failure_spec.rb +65 -0
  99. data/spec/lib/deterministic/result/result_map_spec.rb +155 -0
  100. data/spec/lib/deterministic/result/result_shared.rb +25 -0
  101. data/spec/lib/deterministic/result/success_spec.rb +41 -0
  102. data/spec/lib/deterministic/result_spec.rb +63 -0
  103. data/spec/lib/deterministic/sequencer_spec.rb +506 -0
  104. data/spec/lib/edge_cases_spec.rb +156 -0
  105. data/spec/lib/enum_spec.rb +114 -0
  106. data/spec/lib/native_pattern_matching_spec.rb +74 -0
  107. data/spec/localization_adapter_spec.rb +66 -0
  108. data/spec/organizer/with_reducer_spec.rb +56 -0
  109. data/spec/organizer_key_aliases_spec.rb +29 -0
  110. data/spec/organizer_spec.rb +115 -0
  111. data/spec/readme_spec.rb +45 -0
  112. data/spec/sample/calculates_order_tax_action_spec.rb +16 -0
  113. data/spec/sample/calculates_tax_spec.rb +30 -0
  114. data/spec/sample/looks_up_tax_percentage_action_spec.rb +55 -0
  115. data/spec/sample/provides_free_shipping_action_spec.rb +25 -0
  116. data/spec/sample/tax/calculates_order_tax_action.rb +10 -0
  117. data/spec/sample/tax/calculates_tax.rb +11 -0
  118. data/spec/sample/tax/looks_up_tax_percentage_action.rb +28 -0
  119. data/spec/sample/tax/provides_free_shipping_action.rb +11 -0
  120. data/spec/spec_helper.rb +32 -0
  121. data/spec/support.rb +1 -0
  122. data/spec/test_doubles.rb +656 -0
  123. data/spec/testing/context_factory/iterate_spec.rb +39 -0
  124. data/spec/testing/context_factory/reduce_if_spec.rb +40 -0
  125. data/spec/testing/context_factory/reduce_until_spec.rb +40 -0
  126. data/spec/testing/context_factory/with_callback_spec.rb +38 -0
  127. data/spec/testing/context_factory_spec.rb +76 -0
  128. data/switchyard.gemspec +35 -0
  129. metadata +351 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 214076695f4783d7613d435f9154053728032cd1564a9be740079194a14271f3
4
+ data.tar.gz: 4eb8db82e79600d9a4996d6836bc015249b6c18124d98761556a8fd21ad000e7
5
+ SHA512:
6
+ metadata.gz: b59a34bd0e3771d525c8a4bf5751275a4b8a2420921e4d02c3cacaca97fb189606e18e9b512ab502a74f686d2263272b2e9ca4a831dc35b35e80adf91a948315
7
+ data.tar.gz: 2f37a12cd153af5822c07c1a11be6c0c72dc9df338a4d940f55c5191da901c2f95ab4842b1d4456ee77a7acee41f65ed64fec76c8bd71f30d658c9f6bdea0773
@@ -0,0 +1,71 @@
1
+ name: CI Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, master, develop ]
6
+ pull_request:
7
+ branches: [ main, master, develop ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ${{ matrix.os }}-latest
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ os: [ubuntu, macos, windows]
16
+ ruby: ['3.1', '3.2', '3.3', '3.4', '4.0']
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ - uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: ${{ matrix.ruby }}
22
+ bundler-cache: true
23
+ - run: bundle exec rspec spec
24
+
25
+ rubocop:
26
+ runs-on: ubuntu-latest
27
+ steps:
28
+ - uses: actions/checkout@v4
29
+ - uses: ruby/setup-ruby@v1
30
+ with:
31
+ ruby-version: '3.4'
32
+ bundler-cache: true
33
+ - run: bundle exec rubocop
34
+
35
+ # Verifica che i vincoli minimi delle dipendenze runtime dichiarati
36
+ # nel gemspec siano reali (sulla versione Ruby minima supportata)
37
+ minimal-deps:
38
+ runs-on: ubuntu-latest
39
+ strategy:
40
+ fail-fast: false
41
+ matrix:
42
+ gemfile: [dry_inflector_0_2_1, i18n_1_8_11]
43
+ env:
44
+ BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile
45
+ steps:
46
+ - uses: actions/checkout@v4
47
+ - uses: ruby/setup-ruby@v1
48
+ with:
49
+ ruby-version: '3.1'
50
+ bundler-cache: true
51
+ - run: bundle exec rspec spec
52
+
53
+ codecov:
54
+ name: Codecov
55
+ runs-on: ubuntu-latest
56
+ env:
57
+ RUN_COVERAGE_REPORT: true
58
+ steps:
59
+ - uses: actions/checkout@v4
60
+ - uses: ruby/setup-ruby@v1
61
+ with:
62
+ ruby-version: '3.4'
63
+ bundler-cache: true
64
+ - run: bundle exec rspec spec
65
+ - uses: codecov/codecov-action@v5
66
+ with:
67
+ token: ${{ secrets.CODECOV_TOKEN }}
68
+ files: ./coverage/coverage.xml # optional
69
+ flags: unittests # optional
70
+ name: codecov-simplecov # optional
71
+ verbose: true # optional (default = false)
data/.gitignore ADDED
@@ -0,0 +1,24 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ vendor/bundle
19
+ bin
20
+ gems.tags
21
+ tags
22
+ .claude/
23
+ .ruby-lsp/
24
+ !*.gitkeep
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ --format progress
3
+ --order rand
data/.rubocop.yml ADDED
@@ -0,0 +1,101 @@
1
+ # require: rubocop-performance
2
+
3
+ AllCops:
4
+ TargetRubyVersion: 3.1
5
+ Exclude:
6
+ - 'lib/switchyard.rb'
7
+ - 'vendor/bundle/**/*'
8
+ - 'gemfiles/vendor/bundle/**/*'
9
+ - 'bin/*'
10
+ - 'switchyard.gemspec'
11
+ - 'audit/**/*'
12
+ NewCops: enable
13
+ SuggestExtensions: false
14
+
15
+ Style/Documentation:
16
+ Enabled: false
17
+
18
+ Style/FrozenStringLiteralComment:
19
+ Enabled: true
20
+ Include:
21
+ - 'lib/**/*.rb'
22
+
23
+ Style/Encoding:
24
+ Enabled: false
25
+
26
+ Style/StringLiterals:
27
+ Enabled: false
28
+
29
+ Style/FormatStringToken:
30
+ Enabled: false
31
+
32
+ Style/RedundantReturn:
33
+ Enabled: false
34
+
35
+ Style/SignalException:
36
+ Enabled: true
37
+
38
+ Style/HashSyntax:
39
+ EnforcedStyle: hash_rockets
40
+
41
+ Style/TrivialAccessors:
42
+ AllowPredicates: true
43
+
44
+ Style/MissingRespondToMissing:
45
+ Enabled: false
46
+
47
+ Style/Alias:
48
+ Enabled: false
49
+
50
+ Style/Lambda:
51
+ EnforcedStyle: literal
52
+
53
+ Naming/PredicatePrefix:
54
+ Enabled: false
55
+
56
+ Metrics/MethodLength:
57
+ Max: 15
58
+
59
+ Metrics/BlockLength:
60
+ Max: 35
61
+ Exclude:
62
+ - 'spec/**/*.rb'
63
+
64
+ Metrics/AbcSize:
65
+ Max: 24
66
+
67
+ Naming/MethodParameterName:
68
+ Enabled: false
69
+
70
+ Layout/TrailingEmptyLines:
71
+ Enabled: false
72
+
73
+ Layout/LineLength:
74
+ Max: 100
75
+
76
+ Layout/EndOfLine:
77
+ Enabled: False
78
+
79
+ Lint/ConstantDefinitionInBlock:
80
+ Exclude:
81
+ - 'spec/**/*.rb'
82
+
83
+ Lint/EmptyClass:
84
+ Exclude:
85
+ - 'spec/**/*.rb'
86
+
87
+ # I cop nuovi sono abilitati automaticamente da NewCops: enable
88
+
89
+ # Template method (throw_error_predicate) e simili: nomi storici dell'API interna
90
+ Naming/PredicateMethod:
91
+ Enabled: false
92
+
93
+ # La gem definisce deliberatamente classi correlate nello stesso file
94
+ # (Result + Prelude, i verifier delle chiavi, i test double)
95
+ Style/OneClassPerFile:
96
+ Enabled: false
97
+
98
+ # Nelle spec l'include a top-level e' prassi
99
+ Style/MixinUsage:
100
+ Exclude:
101
+ - 'spec/**/*.rb'
data/.solargraph.yml ADDED
@@ -0,0 +1,11 @@
1
+ ---
2
+ include:
3
+ - "**/*.rb"
4
+ exclude:
5
+ - resources/**/*
6
+ - coverage/**/*
7
+ - spec/**/*
8
+ domains: []
9
+ reporters:
10
+ - rubocop
11
+ max_files: 5000
data/Appraisals ADDED
@@ -0,0 +1,7 @@
1
+ appraise "dry-inflector-0.2.1" do
2
+ gem "dry-inflector", "~> 0.2.1"
3
+ end
4
+
5
+ appraise "i18n-1.8.11" do
6
+ gem "i18n", "~> 1.8.11"
7
+ end
data/CHANGELOG.md ADDED
@@ -0,0 +1,303 @@
1
+ ## 7.0.0 (2026-07-30)
2
+
3
+ La gem viene rinominata da `functional-light-service` a `switchyard`; anche il
4
+ repository GitHub passa da `sphynx79/functional-light-service` a
5
+ `sphynx79/switchyard`. Nessun cambiamento funzionale rispetto alla 6.2.0.
6
+
7
+ ### Changed
8
+ - Rinominata la gem in `switchyard` (nome del pacchetto RubyGems, gemspec, require path, URL homepage) ( 2026-07-30 ) [ sphynx79]
9
+ - Rinominato il repository GitHub in `sphynx79/switchyard` ( 2026-07-30 ) [ sphynx79]
10
+
11
+
12
+ ## 6.2.0 (2026-07-18)
13
+
14
+ Port selettivo delle feature di light-service upstream 0.14-0.21 (niente Rails
15
+ support; solo aggiunte retro-compatibili).
16
+
17
+ ### Added
18
+ - skip_all_remaining!: salta tutto il resto dell'organizer, scope annidati compresi; non viene resettato da reduce_if/iterate/ecc. (upstream 0.21) ( 2026-07-18 ) [ sphynx79]
19
+ - reduce_while: macro dell'organizer che controlla la condizione prima di ogni step (upstream 0.21) ( 2026-07-18 ) [ sphynx79]
20
+ - reduce_if_else: come reduce_if ma con ramo else (upstream 0.17) ( 2026-07-18 ) [ sphynx79]
21
+ - reduce_case: dispatch sugli step in base a un valore del context, kwargs :value/:when/:else (upstream 0.18) ( 2026-07-18 ) [ sphynx79]
22
+ - expects :key, default: valore-o-lambda per chiavi attese opzionali; kwarg diverso da :default solleva UnusableExpectKeyDefaultError (upstream 0.17) ( 2026-07-18 ) [ sphynx79]
23
+ - execute accetta un blocco oltre alla lambda (upstream master) ( 2026-07-18 ) [ sphynx79]
24
+ - :organized_by tra le chiavi riservate del KeyVerifier: errore piu chiaro in caso di collisione (upstream 0.14) ( 2026-07-18 ) [ sphynx79]
25
+
26
+ ### Changed
27
+ - add_to_context registra anche gli accessor delle chiavi aggiunte (ctx.mia_chiave); chiavi che collidono con metodi del Context ora sollevano ReservedKeysInContextError invece di passare in silenzio (upstream 0.16) ( 2026-07-18 ) [ sphynx79]
28
+ - i18n non e' piu una dipendenza runtime: di default i simboli si risolvono col nuovo adapter built-in (LocalizationMap + Configuration.locale); l'adapter I18n trasloca in FunctionalLightService::I18n::LocalizationAdapter e viene selezionato solo se l'applicazione carica la gem i18n (upstream 0.19/0.20) ( 2026-07-18 ) [ sphynx79]
29
+
30
+
31
+ ## 6.1.0 (2026-07-03)
32
+
33
+ ### Added
34
+ - Sequencer: do-notation per Result con in_sequence/get/let/and_then/observe/and_yield, portato dalla gem deterministic (MIT) e incluso nel Prelude ( 2026-07-03 ) [ sphynx79]
35
+
36
+
37
+
38
+ ## 6.0.0 (2026-07-03)
39
+
40
+ Release maggiore guidata da un audit tecnico completo (vedi `AUDIT-functional-light-service.md`
41
+ e la sezione "Upgrading to 6.0" del README). Richiede **Ruby >= 3.1** (testato fino a Ruby 4.0).
42
+
43
+ ### Fixed
44
+ - Gli hook before_actions/after_actions dichiarativi non vengono piu consumati dalla prima chiamata dell'organizer (bug critico + race condition in multi-thread) ( 2026-07-03 ) [ sphynx79]
45
+ - La classe Action non trattiene piu l'ultimo context in una variabile di classe (race + memory retention) ( 2026-07-03 ) [ sphynx79]
46
+ - Context#fetch rispetta il contratto di Hash#fetch: KeyError su chiave mancante, nessuna scrittura durante la lettura (BREAKING) ( 2026-07-03 ) [ sphynx79]
47
+ - Alias simmetrici: lettura e scrittura risolvono entrambe verso la chiave originale; niente piu copie fisiche divergenti (BREAKING) ( 2026-07-03 ) [ sphynx79]
48
+ - Rollback completo anche con la stessa action presente piu volte nella pipeline ( 2026-07-03 ) [ sphynx79]
49
+ - fail! non muta piu l'hash di opzioni del chiamante ( 2026-07-03 ) [ sphynx79]
50
+ - reset_skip_remaining! preserva l'outcome e il suo messaggio ( 2026-07-03 ) [ sphynx79]
51
+ - Errore esplicito (ReservedKeysInContextError) quando una chiave expects/promises collide con un metodo esistente del Context (BREAKING) ( 2026-07-03 ) [ sphynx79]
52
+ - Null: respond_to_missing? con la firma corretta; Some(nil) vietato (BREAKING); Context#outcome in sola lettura (BREAKING) ( 2026-07-03 ) [ sphynx79]
53
+ - Spec compatibili con Ruby 3.1-3.4+ (formato Hash#inspect, messaggi NoMethodError, kwargs rspec-mocks) ( 2026-07-03 ) [ sphynx79]
54
+
55
+ ### Added
56
+ - Supporto al pattern matching nativo di Ruby (case/in) per Result/Option e tutti gli enum (deconstruct/deconstruct_keys) ( 2026-07-03 ) [ sphynx79]
57
+ - Modulo Deprecations: warning non fatali, una volta per processo, silenziabili ( 2026-07-03 ) [ sphynx79]
58
+ - Deprecati (funzionanti con warning): Maybe()/Null, Result#>=, Result#<<, Result#+, Option#+ ( 2026-07-03 ) [ sphynx79]
59
+ - Audit tecnico completo con script di verifica e benchmark riproducibili in audit/ ( 2026-07-03 ) [ sphynx79]
60
+
61
+ ### Performance
62
+ - Operazioni Option/Result con dispatch diretto: value_or da ~29k a ~7,1M i/s (~245x) ( 2026-07-03 ) [ sphynx79]
63
+ - Motore match 3x piu veloce (Binding#receiver, exhaustiveness memoizzata, cache degli Struct dei guard) ( 2026-07-03 ) [ sphynx79]
64
+ - Rimosso il deprecation shim VerifyCallMethodExists (~17us per ogni with, pagato anche per item in iterate) ( 2026-07-03 ) [ sphynx79]
65
+ - Accessor del context via method_missing con whitelist (niente singleton class per istanza); iterate senza inflection per chiamata; handler around_each di default costante. Overhead end-to-end per call: da ~55us a ~21us ( 2026-07-03 ) [ sphynx79]
66
+ - frozen_string_literal: true in tutta la lib ( 2026-07-03 ) [ sphynx79]
67
+
68
+ ### Changed
69
+ - required_ruby_version >= 3.1; dev dependencies modernizzate (rspec 3.13, rubocop 1.75+, simplecov 0.22, solargraph 0.60); CI matrix Ruby 3.1/3.2/3.3/3.4/4.0 ( 2026-07-03 ) [ sphynx79]
70
+ - README: sezione "Upgrading to 6.0", contratto di threading documentato, fix esempio fail_with_rollback! (residuo LightService::) ( 2026-07-03 ) [ sphynx79]
71
+
72
+ ### Removed
73
+ - Kernel.eval in impl (sostituito da const_get); dead code (macro ctx di Action) ( 2026-07-03 ) [ sphynx79]
74
+
75
+
76
+ ## 0.5.4 (2026-07-03)
77
+ ### Fixed
78
+ - Blocca rexml < 3.3 per compatibilita con simplecov-cobertura 2.1.0 (fix CI Codecov: Malformed XML No root element) ( 2026-07-03 ) [ sphynx79]
79
+
80
+
81
+ ## 0.5.3 (2026-07-03)
82
+ ### Changed
83
+ - Aggiornato il badge Download Count da herokuapp (dismesso) a shields.io ( 2026-07-03 ) [ sphynx79]
84
+ - Riformattato il README: normalizzazione markdown e line-ending ( 2026-07-03 ) [ sphynx79]
85
+
86
+
87
+ ## 0.5.2 (2022-01-30)
88
+ ### Fixed
89
+ - Risoltro problema codecov upload perche non avevo settato il token ( 2025-05-16 ) [ sphynx79]
90
+
91
+
92
+ ## 0.5.1 (2022-01-30)
93
+ ### Removed
94
+ - Rimuove supporto Travis CI, migrazione completa a GitHub Actions ( 2025-05-16 ) [ sphynx79]
95
+
96
+ ## 0.5.0 (2022-01-30)
97
+ ### GitHub
98
+ - Aggiunto variabile RUN_COVERAGE_REPORT per eseguire il coverage solo nelle azioni di github ( 2022-01-30 ) [ sphynx79]
99
+
100
+ ### Github
101
+ - Aggiornato il sistema per fare l'upload del coverage in https://docs.codecov.com/ nelle action di github ( 2022-01-30 ) [ sphynx79]
102
+
103
+ ### Test
104
+ - organized_by with TestReduceIf organizer ( 2022-01-30 ) [ sphynx79]
105
+ - amend expectation titles to be clearer ( 2022-01-30 ) [ sphynx79]
106
+ - ensure that ctx.organized_by returns correct values ( 2022-01-30 ) [ sphynx79]
107
+
108
+ ### Style
109
+ - sistemato per rubocop 2 allinemaenti parametri keyword ( 2022-01-30 ) [ sphynx79]
110
+
111
+ ### Doc
112
+ - update README with notes about organized_by re: rollback ( 2022-01-30 ) [ sphynx79]
113
+
114
+ ### Added
115
+ - ensure organized_by attr is set on context when Organizer is used ( 2022-01-30 ) [ sphynx79]
116
+ - add `Context#organized_by` attr ( 2022-01-30 ) [ sphynx79]
117
+
118
+
119
+
120
+ ## 0.4.9 (2022-01-30)
121
+ ### Added
122
+ - Agginyo altri test per #add_to_context e #add_aliases e inserito nel README l'utilizzo di add_to_context ( 2022-01-30 ) [ sphynx79]
123
+
124
+ ### Changed
125
+ - migliorato spec per #add_aliases method ( 2022-01-30 ) [ sphynx79]
126
+ - migliorato la descrizione per spec add add_to_context method ( 2022-01-30 ) [ sphynx79]
127
+
128
+
129
+
130
+ ## 0.4.8 (2022-01-30)
131
+ ### Added
132
+ - Aggiuhnto il supporto per add_to_context and add_aliases organizer methods ( 2022-01-30 ) [ sphynx79]
133
+
134
+
135
+
136
+ ## 0.4.7 (2022-01-29)
137
+ ### Fixed
138
+ - sistemato il problema di rspec che mi dava un errore su un test ho dovuto fissare rspec-mocks alla versione 3.10.2 la 3.10.3 mi dava problemi ( 2022-01-29 ) [ sphynx79]
139
+
140
+
141
+
142
+ ## 0.4.6 (2022-01-29)
143
+ ### Fixed
144
+ - sistemato problema github action non trovava i gemfile rinominati ( 2022-01-29 ) [ sphynx79]
145
+
146
+
147
+
148
+ ## 0.4.5 (2022-01-29)
149
+ ### Fixed
150
+ - corretto il problema di spec che non passava i test option_spec match ( 2022-01-29 ) [ sphynx79]
151
+ - Aggiornato Appraisals per eseguire i test rspec e rubocop con diverse versione di i18n e dry_inflector ( 2022-01-28 ) [ sphynx79]
152
+ - Fix the spec description, order <=200 should not have free shipping ( 2022-01-27 ) [ sphynx79]
153
+
154
+
155
+
156
+ ## 0.4.4 (2022-01-27)
157
+ ### Updated
158
+ - Aggiornato la versione è sistemato problema upload codeconv ( 2022-01-27 ) [ sphynx79]
159
+
160
+
161
+
162
+ ## 0.4.3 (2022-01-27)
163
+ ### Added
164
+ - Aggiunto lo stato di codecov nel file readme ( 2022-01-27 ) [ sphynx79]
165
+
166
+
167
+
168
+ ## 0.4.2 (2022-01-27)
169
+ ### Fixed
170
+ - sistemato il path dove codeconv cerca il file del coverage ( 2022-01-27 ) [ sphynx79]
171
+
172
+
173
+
174
+ ## 0.4.1 (2022-01-27)
175
+ ### Added
176
+ - aggiunto supporto per codecov.com ( 2022-01-27 ) [ sphynx79]
177
+
178
+
179
+
180
+ ## 0.4.0 (2022-01-27)
181
+ ### Aupdated
182
+ - Aggioranto il readme, invece di travis uso il simbolo di github actions per vedere se tutti i test hanno dato esito positivo (rubocop,rspec) ( 2022-01-27 ) [ sphynx79]
183
+
184
+
185
+
186
+ ## 0.3.9 (2022-01-26)
187
+
188
+
189
+ ## 0.3.8 (2022-01-26)
190
+ ### Added
191
+ - Aggiunto actions per fare i test in github ( 2022-01-26 ) [ sphynx79]
192
+
193
+
194
+
195
+ ## 0.3.7 (2022-01-26)
196
+
197
+
198
+ ## 0.3.6 (2022-01-26)
199
+
200
+
201
+ ## 0.3.5 (2022-01-26)
202
+
203
+
204
+ ## 0.3.4 (2021-12-15)
205
+
206
+
207
+ ## 0.3.3 (2021-12-15)
208
+ ### Fixed
209
+ - Corretto il problema di passare un hash per avere il dettaglio dell'errore quando fallisce ( 2021-12-15 ) [ sphynx]
210
+
211
+
212
+
213
+ ## 0.3.2 (2020-07-17)
214
+ ### Changed
215
+ - Ottimizzato performance di Deterministic [enum,result] ( 2020-07-17 ) [ sphynx79]
216
+
217
+
218
+
219
+ ## 0.3.1 (2020-02-16)
220
+
221
+
222
+ ## 0.3.0 (2020-02-16)
223
+ ### Removed
224
+ - Rimosso completamente activesupport ( 2020-02-16 ) [ sphynx79]
225
+
226
+
227
+
228
+ ## 0.2.9.2 (2020-02-16)
229
+ ### Removed
230
+ - Rimosso ActiveSupport::Deprecation per i warning di deprecation ( 2020-02-16 ) [ sphynx79]
231
+
232
+
233
+
234
+ ## 0.2.9.1 (2020-02-16)
235
+ ### Fixed
236
+ - Sto cercando di sistemate il problema di travis che da errore per activesupport ( 2020-02-16 ) [ sphynx79]
237
+
238
+
239
+
240
+ ## 0.2.9 (2020-02-16)
241
+ ### Fixed
242
+ - Travis va in errore aggiunt activesupport al mio gemfile ( 2020-02-16 ) [ sphynx79]
243
+
244
+
245
+
246
+ ## 0.2.8 (2020-02-16)
247
+ ### Removed
248
+ - rimosso supporto a activesupport 5 ( 2020-02-16 ) [ sphynx79]
249
+
250
+
251
+
252
+ ## 0.2.7 (2020-02-16)
253
+ ### Fix
254
+ - Risolto problema travis bundle update ( 2020-02-16 ) [ sphynx79]
255
+
256
+
257
+
258
+ ## 0.2.6 (2020-02-16)
259
+ ### Fixed
260
+ - FiFix problem /dev/null windows, e corretto il bug sul metodo failure? ( 2020-02-16 ) [ sphynx79]
261
+
262
+
263
+
264
+ ## 0.2.5 (2019-02-24)
265
+
266
+
267
+ ## 0.2.4 (2019-02-24)
268
+
269
+
270
+ ## 0.2.3 (2019-02-24)
271
+ ### Added
272
+ - test for null and option ( 2019-02-24 ) [ sphynx79]
273
+
274
+
275
+
276
+ ## 0.2.2 (2019-02-24)
277
+ ### Added
278
+ - make readme + some fix ( 2019-02-24 ) [ sphynx79]
279
+
280
+
281
+
282
+ ## 0.2.1 (2019-02-17)
283
+
284
+
285
+ ## 0.2.1 (2019-02-17)
286
+ ### Fixed
287
+ - remove doble version in changelog ( 2019-02-17 ) [ sphynx79]
288
+
289
+ ### Removed
290
+ - remove all orchestrator reference ( 2019-02-17 ) [ sphynx79]
291
+
292
+ ### Changed
293
+ - cambiato versione parto dalla 0.1.0 ( 2019-02-17 ) [ sphynx79]
294
+
295
+
296
+
297
+ ## 0.2.0 (2019-02-17)
298
+ ### Removed
299
+ - remove all orchestrator reference ( 2019-02-17 ) [ sphynx79]
300
+
301
+ ## 0.1.0 (2019-02-17)
302
+ ### Changed
303
+ - fork light-service gem and create first commmit ( 2019-02-17 ) [ sphynx79]
@@ -0,0 +1,22 @@
1
+ # Contributor Code of Conduct
2
+
3
+ As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
4
+
5
+ We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.
6
+
7
+ Examples of unacceptable behavior by participants include:
8
+
9
+ * The use of sexualized language or imagery
10
+ * Personal attacks
11
+ * Trolling or insulting/derogatory comments
12
+ * Public or private harassment
13
+ * Publishing other's private information, such as physical or electronic addresses, without explicit permission
14
+ * Other unethical or unprofessional conduct.
15
+
16
+ Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. By adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently applying these principles to every aspect of managing this project. Project maintainers who do not follow or enforce the Code of Conduct may be permanently removed from the project team.
17
+
18
+ This code of conduct applies both within project spaces and in public spaces when an individual is representing the project or its community.
19
+
20
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.
21
+
22
+ This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0, available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in switchyard.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Attila Domokos
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.