quantitative 0.3.0 → 0.3.1

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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +3 -1
  3. data/lib/quant/asset.rb +0 -2
  4. data/lib/quant/experimental.rb +3 -1
  5. data/lib/quant/indicators/adx.rb +1 -5
  6. data/lib/quant/indicators/atr.rb +1 -4
  7. data/lib/quant/indicators/cci.rb +1 -1
  8. data/lib/quant/indicators/decycler.rb +1 -1
  9. data/lib/quant/indicators/dominant_cycles/acr.rb +3 -6
  10. data/lib/quant/indicators/dominant_cycles/band_pass.rb +2 -4
  11. data/lib/quant/indicators/dominant_cycles/differential.rb +2 -2
  12. data/lib/quant/indicators/dominant_cycles/dominant_cycle.rb +2 -4
  13. data/lib/quant/indicators/dominant_cycles/half_period.rb +2 -4
  14. data/lib/quant/indicators/dominant_cycles/homodyne.rb +2 -5
  15. data/lib/quant/indicators/dominant_cycles/phase_accumulator.rb +2 -4
  16. data/lib/quant/indicators/frama.rb +1 -1
  17. data/lib/quant/indicators/indicator.rb +1 -1
  18. data/lib/quant/indicators/indicator_point.rb +1 -1
  19. data/lib/quant/indicators/mama.rb +1 -1
  20. data/lib/quant/indicators/mesa.rb +1 -1
  21. data/lib/quant/indicators/ping.rb +1 -1
  22. data/lib/quant/indicators/pivot.rb +1 -1
  23. data/lib/quant/indicators/pivots/atr.rb +2 -2
  24. data/lib/quant/indicators/pivots/bollinger.rb +2 -2
  25. data/lib/quant/indicators/pivots/camarilla.rb +2 -2
  26. data/lib/quant/indicators/pivots/classic.rb +2 -2
  27. data/lib/quant/indicators/pivots/demark.rb +2 -2
  28. data/lib/quant/indicators/pivots/donchian.rb +2 -2
  29. data/lib/quant/indicators/pivots/fibbonacci.rb +2 -2
  30. data/lib/quant/indicators/pivots/guppy.rb +2 -2
  31. data/lib/quant/indicators/pivots/keltner.rb +2 -2
  32. data/lib/quant/indicators/pivots/murrey.rb +2 -3
  33. data/lib/quant/indicators/pivots/traditional.rb +2 -2
  34. data/lib/quant/indicators/pivots/woodie.rb +3 -3
  35. data/lib/quant/indicators.rb +6 -0
  36. data/lib/quant/indicators_source.rb +0 -1
  37. data/lib/quant/mixins/filters.rb +0 -3
  38. data/lib/quant/mixins/moving_averages.rb +0 -3
  39. data/lib/quant/ticks/ohlc.rb +0 -2
  40. data/lib/quant/ticks/spot.rb +0 -2
  41. data/lib/quant/version.rb +1 -1
  42. data/lib/quantitative.rb +21 -4
  43. metadata +18 -4
  44. data/quantitative.gemspec +0 -39
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '06693d3511af25d58463fd872f004265889bb0c8d8344dd4fc8436bd4a66f63b'
4
- data.tar.gz: b1e7db72820532999567608e1d3b864a7e4b1029b363de4c05c1032b177abc5a
3
+ metadata.gz: 0cfda18120bf7e3432b359a53d19d633f70f66e3ea4468098673cfc89ac2f77e
4
+ data.tar.gz: 598dc565f6da96ce9565afee249f38bc909234177d7b484ce82cba226e2e8d60
5
5
  SHA512:
6
- metadata.gz: 6dcc22eaa684535f9452287e1a486d2de3bc3d38b12be207130e62fb0264ea90087e20c9a9693952b8be3030738a3eebd8681813ccf2f0c2838aa9c33c9ad7b1
7
- data.tar.gz: 05d9470a2c3426c46b6e64113b728672d841640dea56887d1efc9fcd9c7839b561f09cb2da4d6453bd339222bd07f48885bbae443e55646b90b855cd6bec716f
6
+ metadata.gz: 5b2625954abe0e72a776de95da8d26af213440cb7e2d7beddd48529dfdb70d7247562066b09a3edd1dd3f171ad3ff8a32390ffe337729ca9712f65bdb147084e
7
+ data.tar.gz: 780f81a808f14d2d63b53aa81f8f30920b252979f17409d1ba48105ed5eadc91dadc253ada0cd75c6c21b8e6a8450cf39c75ce542adb450759fb097679899cce
data/Gemfile.lock CHANGED
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- quantitative (0.3.0)
4
+ quantitative (0.3.1)
5
5
  oj (~> 3.10)
6
+ zeitwerk (~> 2.6)
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
@@ -126,6 +127,7 @@ GEM
126
127
  unicode-display_width (2.5.0)
127
128
  vernier (0.5.1)
128
129
  yard (0.9.34)
130
+ zeitwerk (2.6.15)
129
131
 
130
132
  PLATFORMS
131
133
  arm64-darwin-22
data/lib/quant/asset.rb CHANGED
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "asset_class"
4
-
5
3
  module Quant
6
4
  # A {Quant::Asset} is a representation of a financial instrument such as a stock, option, future, or currency.
7
5
  # It is used to represent the instrument that is being traded, analyzed, or managed.
@@ -14,7 +14,9 @@ module Quant
14
14
  end
15
15
  end
16
16
 
17
- def self.experimental(message)
17
+ module_function
18
+
19
+ def experimental(message)
18
20
  return if Experimental.rspec_defined?
19
21
  return if Experimental.tracker[caller.first]
20
22
 
@@ -1,11 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "indicator_point"
4
- require_relative "indicator"
5
- require_relative "atr"
6
-
7
3
  module Quant
8
- class Indicators
4
+ module Indicators
9
5
  class AdxPoint < IndicatorPoint
10
6
  attribute :dmu, default: 0.0
11
7
  attribute :dmd, default: 0.0
@@ -1,10 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "indicator_point"
4
- require_relative "indicator"
5
-
6
3
  module Quant
7
- class Indicators
4
+ module Indicators
8
5
  class AtrPoint < IndicatorPoint
9
6
  attribute :tr, default: 0.0
10
7
  attribute :period, default: :min_period
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Quant
4
- class Indicators
4
+ module Indicators
5
5
  class CciPoint < IndicatorPoint
6
6
  attribute :hp, default: 0.0
7
7
  attribute :real, default: 0.0
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Quant
4
- class Indicators
4
+ module Indicators
5
5
  # The decycler oscillator can be useful for determining the transition be- tween uptrends and downtrends by the crossing of the zero
6
6
  # line. Alternatively, the changes of slope of the decycler oscillator are easier to identify than the changes in slope of the
7
7
  # original decycler. Optimum cutoff periods can easily be found by experimentation.
@@ -1,12 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "../indicator_point"
4
- require_relative "dominant_cycle"
5
-
6
3
  module Quant
7
- class Indicators
8
- class DominantCycles
9
- class AcrPoint < DominantCyclePoint
4
+ module Indicators
5
+ module DominantCycles
6
+ class AcrPoint < Quant::Indicators::IndicatorPoint
10
7
  attribute :hp, default: 0.0
11
8
  attribute :filter, default: 0.0
12
9
  attribute :interim_period, default: 0.0
@@ -1,10 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "dominant_cycle"
4
-
5
3
  module Quant
6
- class Indicators
7
- class DominantCycles
4
+ module Indicators
5
+ module DominantCycles
8
6
  class BandPassPoint < Quant::Indicators::IndicatorPoint
9
7
  attribute :hp, default: 0.0
10
8
  attribute :bp, default: 0.0
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Quant
4
- class Indicators
5
- class DominantCycles
4
+ module Indicators
5
+ module DominantCycles
6
6
  # The Dual Differentiator algorithm computes the phase angle from the
7
7
  # analytic signal as the arctangent of the ratio of the imaginary
8
8
  # component to the real component. Further, the angular frequency
@@ -1,9 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "../indicator"
4
-
5
3
  module Quant
6
- class Indicators
4
+ module Indicators
7
5
  # Dominant Cycles measure the primary cycle within a given range. By default, the library
8
6
  # is wired to look for cycles between 10 and 48 bars. These values can be adjusted by setting
9
7
  # the `min_period` and `max_period` configuration values in {Quant::Config}.
@@ -18,7 +16,7 @@ module Quant
18
16
  # The purpose of these indicators is to compute the dominant cycle and underpin the various
19
17
  # indicators that would otherwise be setting an arbitrary lookback period. This makes the
20
18
  # indicators adaptive and auto-tuning to the market dynamics. Or so the theory goes!
21
- class DominantCycles
19
+ module DominantCycles
22
20
  class DominantCyclePoint < Quant::Indicators::IndicatorPoint
23
21
  attribute :smooth, default: 0.0
24
22
  attribute :detrend, default: 0.0
@@ -1,10 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "dominant_cycle"
4
-
5
3
  module Quant
6
- class Indicators
7
- class DominantCycles
4
+ module Indicators
5
+ module DominantCycles
8
6
  # This dominant cycle indicator is based on the half period
9
7
  # that is the midpoint of the `min_period` and `max_period`
10
8
  # configured in the `Quant.config.indicators` object.
@@ -1,11 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "../indicator_point"
4
- require_relative "dominant_cycle"
5
-
6
3
  module Quant
7
- class Indicators
8
- class DominantCycles
4
+ module Indicators
5
+ module DominantCycles
9
6
  # Homodyne means the signal is multiplied by itself. More precisely,
10
7
  # we want to multiply the signal of the current bar with the complex
11
8
  # value of the signal one bar ago
@@ -1,10 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "dominant_cycle"
4
-
5
3
  module Quant
6
- class Indicators
7
- class DominantCycles
4
+ module Indicators
5
+ module DominantCycles
8
6
  # The phase accumulation method of computing the dominant cycle is perhaps
9
7
  # the easiest to comprehend. In this technique, we measure the phase
10
8
  # at each sample by taking the arctangent of the ratio of the quadrature
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Quant
4
- class Indicators
4
+ module Indicators
5
5
  class FramaPoint < IndicatorPoint
6
6
  attribute :frama, default: :input
7
7
  attribute :dimension, default: 0.0
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Quant
4
- class Indicators
4
+ module Indicators
5
5
  # The {Quant::Indicators::Indicator} class is the abstract ancestor for all Indicators.
6
6
  #
7
7
  class Indicator
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Quant
4
- class Indicators
4
+ module Indicators
5
5
  class IndicatorPoint
6
6
  include Quant::Attributes
7
7
  extend Forwardable
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Quant
4
- class Indicators
4
+ module Indicators
5
5
  class MamaPoint < IndicatorPoint
6
6
  attribute :smooth, default: 0.0
7
7
  attribute :detrend, default: 0.0
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Quant
4
- class Indicators
4
+ module Indicators
5
5
  # The MESA inidicator
6
6
  class MesaPoint < IndicatorPoint
7
7
  attribute :mama, default: :input
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Quant
4
- class Indicators
4
+ module Indicators
5
5
  # A simple point used primarily to test the indicator system in unit tests.
6
6
  # It has a simple computation that just sets the pong value to the input value
7
7
  # and increments the compute_count by 1 each time compute is called.
@@ -1,5 +1,5 @@
1
1
  module Quant
2
- class Indicators
2
+ module Indicators
3
3
  class PivotPoint < IndicatorPoint
4
4
  attribute :high_price
5
5
  attribute :avg_high, default: :high_price
@@ -1,6 +1,6 @@
1
1
  module Quant
2
- class Indicators
3
- class Pivots
2
+ module Indicators
3
+ module Pivots
4
4
  class Atr < Pivot
5
5
  depends_on Indicators::Atr
6
6
 
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Quant
4
- class Indicators
5
- class Pivots
4
+ module Indicators
5
+ module Pivots
6
6
  class Bollinger < Pivot
7
7
  using Quant
8
8
 
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Quant
4
- class Indicators
5
- class Pivots
4
+ module Indicators
5
+ module Pivots
6
6
  # Camarilla pivot point calculations are rather straightforward. We need to
7
7
  # input the previous day’s open, high, low and close. The formulas for each
8
8
  # resistance and support level are:
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Quant
4
- class Indicators
5
- class Pivots
4
+ module Indicators
5
+ module Pivots
6
6
  class Classic < Pivot
7
7
  def compute_midpoint
8
8
  p0.midpoint = super_smoother :input, previous: :midpoint, period: averaging_period
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Quant
4
- class Indicators
5
- class Pivots
4
+ module Indicators
5
+ module Pivots
6
6
  # The value of X in the formula below depends on where the Close of the market is.
7
7
  # If Close = Open then X = (H + L + (C * 2))
8
8
 
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Quant
4
- class Indicators
5
- class Pivots
4
+ module Indicators
5
+ module Pivots
6
6
  class Donchian < Pivot
7
7
  using Quant
8
8
 
@@ -1,6 +1,6 @@
1
1
  module Quant
2
- class Indicators
3
- class Pivots
2
+ module Indicators
3
+ module Pivots
4
4
  class Fibbonacci < Pivot
5
5
  def averaging_period
6
6
  half_period
@@ -1,6 +1,6 @@
1
1
  module Quant
2
- class Indicators
3
- class Pivots
2
+ module Indicators
3
+ module Pivots
4
4
  class Guppy < Pivot
5
5
  def guppy_ema(period, band)
6
6
  return p0.input unless p1[band]
@@ -1,6 +1,6 @@
1
1
  module Quant
2
- class Indicators
3
- class Pivots
2
+ module Indicators
3
+ module Pivots
4
4
  class Keltner < Pivot
5
5
  depends_on Indicators::Atr
6
6
 
@@ -1,8 +1,7 @@
1
- require_relative '../pivot'
2
1
 
3
2
  module Quant
4
- class Indicators
5
- class Pivots
3
+ module Indicators
4
+ module Pivots
6
5
  class Murrey < Pivot
7
6
  def multiplier
8
7
  0.125
@@ -1,6 +1,6 @@
1
1
  module Quant
2
- class Indicators
3
- class Pivots
2
+ module Indicators
3
+ module Pivots
4
4
  class Traditional < Pivot
5
5
  def multiplier
6
6
  2.0
@@ -1,8 +1,8 @@
1
- require_relative '../pivot'
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Quant
4
- class Indicators
5
- class Pivots
4
+ module Indicators
5
+ module Pivots
6
6
  # One of the key differences in calculating Woodie's Pivot Point to other pivot
7
7
  # points is that the current session's open price is used in the PP formula with
8
8
  # the previous session's high and low. At the time-of-day that we calculate the
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Quant
4
+ module Indicators
5
+ end
6
+ end
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "dominant_cycles_source"
4
3
  module Quant
5
4
  # {Quant::IndicatorSource} holds a collection of {Quant::Indicators::Indicator} for a given input source.
6
5
  # This class ensures dominant cycle computations come before other indicators that depend on them.
@@ -1,8 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "high_pass_filters"
4
- require_relative "butterworth_filters"
5
- require_relative "universal_filters"
6
3
  module Quant
7
4
  module Mixins
8
5
  module Filters
@@ -1,8 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "weighted_moving_average"
4
- require_relative "simple_moving_average"
5
- require_relative "exponential_moving_average"
6
3
  module Quant
7
4
  module Mixins
8
5
  module MovingAverages
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "tick"
4
-
5
3
  module Quant
6
4
  module Ticks
7
5
  # A {Quant::Ticks::OHLC} is a bar or candle for a point in time that
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "tick"
4
-
5
3
  module Quant
6
4
  module Ticks
7
5
  # A +Spot+ is a single price point in time. It is the most basic form of a {Quant::Ticks::Tick} and is usually used to represent
data/lib/quant/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Quant
4
- VERSION = "0.3.0"
4
+ VERSION = "0.3.1"
5
5
  end
data/lib/quantitative.rb CHANGED
@@ -4,14 +4,31 @@ require "time"
4
4
  require "date"
5
5
  require "oj"
6
6
  require "csv"
7
+ require "zeitwerk"
7
8
 
8
9
  lib_folder = File.expand_path(File.join(File.dirname(__FILE__)))
9
10
  quant_folder = File.join(lib_folder, "quant")
10
11
 
11
- # require top-level files
12
- Dir.glob(File.join(quant_folder, "*.rb")).each { |fn| require fn }
12
+ # Explicitly require module functions since Zeitwerk isn't configured, yet.
13
+ require_relative "quant/time_methods"
14
+ require_relative "quant/config"
15
+ require_relative "quant/experimental"
16
+ module Quant
17
+ include TimeMethods
18
+ include Config
19
+ include Experimental
20
+ end
21
+
22
+ # Configure Zeitwerk to autoload the Quant module.
23
+ loader = Zeitwerk::Loader.for_gem
24
+ loader.push_dir(quant_folder, namespace: Quant)
25
+
26
+ loader.inflector.inflect "ohlc" => "OHLC"
27
+ loader.inflector.inflect "version" => "VERSION"
28
+
29
+ loader.setup
13
30
 
14
- # require sub-folders and their sub-folders
15
- %w(refinements mixins statistics settings ticks indicators).each do |sub_folder|
31
+ # Refinements aren't autoloaded by Zeitwerk, so we need to require them manually.
32
+ %w(refinements).each do |sub_folder|
16
33
  Dir.glob(File.join(quant_folder, sub_folder, "**/*.rb")).each { |fn| require fn }
17
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quantitative
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Lang
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-05-29 00:00:00.000000000 Z
11
+ date: 2024-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.10'
27
+ - !ruby/object:Gem::Dependency
28
+ name: zeitwerk
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.6'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.6'
27
41
  description: Quantitative and statistical tools written for Ruby 3.2+ for trading
28
42
  and finance.
29
43
  email:
@@ -51,6 +65,7 @@ files:
51
65
  - lib/quant/dominant_cycles_source.rb
52
66
  - lib/quant/errors.rb
53
67
  - lib/quant/experimental.rb
68
+ - lib/quant/indicators.rb
54
69
  - lib/quant/indicators/adx.rb
55
70
  - lib/quant/indicators/atr.rb
56
71
  - lib/quant/indicators/cci.rb
@@ -115,7 +130,6 @@ files:
115
130
  - lib/quant/version.rb
116
131
  - lib/quantitative.rb
117
132
  - possibilities.png
118
- - quantitative.gemspec
119
133
  homepage: https://github.com/mwlang/quantitative
120
134
  licenses:
121
135
  - MIT
@@ -139,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
153
  - !ruby/object:Gem::Version
140
154
  version: '0'
141
155
  requirements: []
142
- rubygems_version: 3.5.6
156
+ rubygems_version: 3.5.11
143
157
  signing_key:
144
158
  specification_version: 4
145
159
  summary: Quantitative and statistical tools written for Ruby 3.2+ for trading and
data/quantitative.gemspec DELETED
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "lib/quant/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "quantitative"
7
- spec.version = Quant::VERSION
8
- spec.authors = ["Michael Lang"]
9
- spec.email = ["mwlang@cybrains.net"]
10
-
11
- spec.summary = "Quantitative and statistical tools written for Ruby 3.2+ for trading and finance."
12
- spec.description = spec.summary
13
- spec.homepage = "https://github.com/mwlang/quantitative"
14
- spec.license = "MIT"
15
- spec.required_ruby_version = ">= 3.2"
16
-
17
- spec.metadata["allowed_push_host"] = "https://rubygems.org"
18
-
19
- spec.metadata["homepage_uri"] = spec.homepage
20
- spec.metadata["source_code_uri"] = spec.homepage
21
- spec.metadata["changelog_uri"] = spec.homepage
22
-
23
- # Specify which files should be added to the gem when it is released.
24
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
- spec.files = Dir.chdir(__dir__) do
26
- `git ls-files -z`.split("\x0").reject do |f|
27
- (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
28
- end
29
- end
30
- spec.bindir = "exe"
31
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
32
- spec.require_paths = ["lib"]
33
-
34
- # Uncomment to register a new dependency of your gem
35
- spec.add_dependency "oj", "~> 3.10"
36
-
37
- # For more information and examples about making a new gem, check out our
38
- # guide at: https://bundler.io/guides/creating_gem.html
39
- end