skn_utils 3.3.11 → 3.3.12
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 -1
- data/bin/console +4 -0
- data/lib/skn_utils/business_services/year_month.rb +58 -0
- data/lib/skn_utils/configurable.rb +79 -0
- data/lib/skn_utils/notifier_base.rb +8 -1
- data/lib/skn_utils/version.rb +1 -1
- data/lib/skn_utils.rb +7 -3
- data/spec/lib/skn_utils/business_services/year_month_spec.rb +49 -0
- data/spec/lib/skn_utils/configurable_spec.rb +57 -0
- data/spec/spec_helper.rb +1 -0
- metadata +8 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: e6048e54b3ef049c2f0cc12d2e5d8c1068464bf9
         | 
| 4 | 
            +
              data.tar.gz: 13d07f94bf6785297b7da9f407447abe7ea0242c
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 491f607e8959573f8d9a8806d1447802507fb50a8ae51487fa428421a87c3b20569fe62212f0cc6a1b6226182dba2f25a6813515fe78fa60bced473fcb8be1fe
         | 
| 7 | 
            +
              data.tar.gz: 8237f57472729b24e8b25b7346bdda8413f0d0616f1942dbda9d6cda1f05a558c91441ba68d0f40fcbc48a65bb8b8b7678a23790ebef05cfd1a861dbb055da5e
         | 
    
        data/README.md
    CHANGED
    
    | @@ -54,7 +54,8 @@ Ruby Gem containing a Ruby PORO (Plain Old Ruby Object) that can be instantiated | |
| 54 54 |  | 
| 55 55 | 
             
            ## Public Components
         | 
| 56 56 | 
             
                SknUtils::NestedResult           # >= V 3.0.0 Primary Key/Value Container with Dot/Hash notiation support.
         | 
| 57 | 
            -
                SknSettings                      #  | 
| 57 | 
            +
                SknSettings                      # Multi-level application Configuration class, Key/Value Container with Dot/Hash notiation support.
         | 
| 58 | 
            +
                SknUtils::Configurable           # Basic one-level configuration settings module for Applications and or Gems
         | 
| 58 59 |  | 
| 59 60 | 
             
                SknHash                          # Wrapper for name only, WITHOUT SknUtils namespace, inherits from SknUtils::NestedResult
         | 
| 60 61 | 
             
                SknUtils::ResultBean             # Wrapper for name only, inherits from SknUtils::NestedResult
         | 
| @@ -65,6 +66,7 @@ Ruby Gem containing a Ruby PORO (Plain Old Ruby Object) that can be instantiated | |
| 65 66 | 
             
                SknUtils::List::CircularLinkedList  # List with forward (#next) and backward (#prev) navigation, and head/tail wrapping
         | 
| 66 67 |  | 
| 67 68 |  | 
| 69 | 
            +
             | 
| 68 70 | 
             
            ## Configuration Options
         | 
| 69 71 | 
             
                None required other than initialization hash
         | 
| 70 72 |  | 
    
        data/bin/console
    CHANGED
    
    | @@ -2,6 +2,10 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            require 'bundler/setup'
         | 
| 4 4 | 
             
            require 'skn_utils'
         | 
| 5 | 
            +
            require 'skn_utils/business_services/year_month'
         | 
| 6 | 
            +
            require 'skn_utils/exploring/commander'
         | 
| 7 | 
            +
            require 'skn_utils/exploring/action_service'
         | 
| 8 | 
            +
            require 'skn_utils/exploring/configuration'
         | 
| 5 9 |  | 
| 6 10 | 
             
            require 'pry'
         | 
| 7 11 | 
             
            Pry.start
         | 
| @@ -0,0 +1,58 @@ | |
| 1 | 
            +
            ##
         | 
| 2 | 
            +
            # File: <gem-root>/lib/skn_utils/business_services/year_month.rb
         | 
| 3 | 
            +
            #  Ref: http://blog.arkency.com/2014/08/using-ruby-range-with-custom-classes/
         | 
| 4 | 
            +
            #
         | 
| 5 | 
            +
            ## Calculates YearMonth
         | 
| 6 | 
            +
            #
         | 
| 7 | 
            +
            # YearMonth.new(2014, 3) > YearMonth.new(2014, 1)
         | 
| 8 | 
            +
            # => true
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            # YearMonth.new(2014, 1) >= YearMonth.new(2014, 1)
         | 
| 11 | 
            +
            # => true
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            # YearMonth.new(2015, 1) < YearMonth.new(2014, 3)
         | 
| 14 | 
            +
            # => false
         | 
| 15 | 
            +
            #
         | 
| 16 | 
            +
            module SknUtils
         | 
| 17 | 
            +
              module BusinessServices
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                class YearMonth < Struct.new(:year, :month)
         | 
| 20 | 
            +
                  include Comparable
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  def initialize(iyear, imonth)
         | 
| 23 | 
            +
                    cleaned_year = iyear.to_i
         | 
| 24 | 
            +
                    cleaned_month = imonth.to_i
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                    raise ArgumentError unless cleaned_year > 0
         | 
| 27 | 
            +
                    raise ArgumentError unless cleaned_month >= 1 && cleaned_month <= 12
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    super(cleaned_year, cleaned_month)
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                  def next
         | 
| 33 | 
            +
                    if month == 12
         | 
| 34 | 
            +
                      self.class.new(year+1, 1)
         | 
| 35 | 
            +
                    else
         | 
| 36 | 
            +
                      self.class.new(year, month+1)
         | 
| 37 | 
            +
                    end
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
                  alias_method :succ, :next
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                  def <=>(other)
         | 
| 42 | 
            +
                    (year <=> other.year).nonzero? || month <=> other.month
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                  # need to do some time calcs
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  def beginning_of
         | 
| 48 | 
            +
                    Time.parse("12:00",Date.new(year, month, 1).to_time) # strftime('%Y-%m-%d')
         | 
| 49 | 
            +
                  end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                  def end_of
         | 
| 52 | 
            +
                    Time.parse("12:00",Date.new(year, month, -1).to_time) # strftime('%Y-%m-%d')
         | 
| 53 | 
            +
                  end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                  private :year=, :month=
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
              end
         | 
| 58 | 
            +
            end
         | 
| @@ -0,0 +1,79 @@ | |
| 1 | 
            +
            ##
         | 
| 2 | 
            +
            # File: <gem-root>/lib/skn_utils/configurable.rb
         | 
| 3 | 
            +
            #  Ref: https://www.toptal.com/ruby/ruby-dsl-metaprogramming-guide
         | 
| 4 | 
            +
            #
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            module SknUtils
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            # In the end, we have got ourselves a pretty neat module for making an arbitrary
         | 
| 9 | 
            +
            # class configurable and then specifying those configuration values using a clean
         | 
| 10 | 
            +
            # and simple DSL that also lets us reference one configuration attribute
         | 
| 11 | 
            +
            # from another:
         | 
| 12 | 
            +
            #
         | 
| 13 | 
            +
            #################
         | 
| 14 | 
            +
            # Inside Target component
         | 
| 15 | 
            +
            #################
         | 
| 16 | 
            +
            # class MyApp
         | 
| 17 | 
            +
            #   include SknUtils::Configurable.with(:app_id, :title, :cookie_name)
         | 
| 18 | 
            +
            #   # ...
         | 
| 19 | 
            +
            # end
         | 
| 20 | 
            +
            #
         | 
| 21 | 
            +
            #################
         | 
| 22 | 
            +
            # Inside Initializer
         | 
| 23 | 
            +
            #################
         | 
| 24 | 
            +
            # MyApp.configure do
         | 
| 25 | 
            +
            #   app_id "my_app"
         | 
| 26 | 
            +
            #   title "My App"
         | 
| 27 | 
            +
            #   cookie_name { "#{app_id}_session" }
         | 
| 28 | 
            +
            # end
         | 
| 29 | 
            +
            #
         | 
| 30 | 
            +
            #################
         | 
| 31 | 
            +
            # Usage:
         | 
| 32 | 
            +
            #################
         | 
| 33 | 
            +
            # MyApp.config.app_id # ==> "my_app"
         | 
| 34 | 
            +
            #
         | 
| 35 | 
            +
            # Here is the final version of the module that implements our DSL—a total of 36 lines of code:
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              module Configurable
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                def self.with(*attrs)
         | 
| 40 | 
            +
                  not_provided = Object.new
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  # Define the class/module methods
         | 
| 43 | 
            +
                  config_class = Class.new do
         | 
| 44 | 
            +
                    attrs.each do |attr|
         | 
| 45 | 
            +
                      define_method attr do |value = not_provided, &block|
         | 
| 46 | 
            +
                        if value === not_provided && block.nil?
         | 
| 47 | 
            +
                          result = instance_variable_get("@#{attr}")
         | 
| 48 | 
            +
                          result.is_a?(Proc) ? instance_eval(&result) : result
         | 
| 49 | 
            +
                        else
         | 
| 50 | 
            +
                          instance_variable_set("@#{attr}", block || value)
         | 
| 51 | 
            +
                        end
         | 
| 52 | 
            +
                      end
         | 
| 53 | 
            +
                    end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                    attr_writer *attrs
         | 
| 56 | 
            +
                   end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                  # Define the runtime access methods
         | 
| 59 | 
            +
                  class_methods = Module.new do
         | 
| 60 | 
            +
                    define_method :config do
         | 
| 61 | 
            +
                      @config ||= config_class.new
         | 
| 62 | 
            +
                    end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                    def configure(&block)
         | 
| 65 | 
            +
                      config.instance_eval(&block)
         | 
| 66 | 
            +
                    end
         | 
| 67 | 
            +
                  end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                  # Apply the custom configuration
         | 
| 70 | 
            +
                  Module.new do
         | 
| 71 | 
            +
                    singleton_class.send :define_method, :included do |host_class|
         | 
| 72 | 
            +
                      host_class.extend class_methods
         | 
| 73 | 
            +
                    end
         | 
| 74 | 
            +
                  end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                end # method
         | 
| 77 | 
            +
             | 
| 78 | 
            +
              end # end module
         | 
| 79 | 
            +
            end # End module
         | 
| @@ -3,7 +3,14 @@ | |
| 3 3 | 
             
            # Ruby Notify like class
         | 
| 4 4 | 
             
            #
         | 
| 5 5 | 
             
            # Ref: https://ozone.wordpress.com/category/programming/metaprogramming/
         | 
| 6 | 
            -
             | 
| 6 | 
            +
            ##
         | 
| 7 | 
            +
            # Listeners implement:
         | 
| 8 | 
            +
            #
         | 
| 9 | 
            +
            #  def attribute_changed(attr, old, new)
         | 
| 10 | 
            +
            #    ...
         | 
| 11 | 
            +
            #  end
         | 
| 12 | 
            +
            #
         | 
| 13 | 
            +
            #
         | 
| 7 14 | 
             
            module SknUtils
         | 
| 8 15 | 
             
              class NotifierBase
         | 
| 9 16 |  | 
    
        data/lib/skn_utils/version.rb
    CHANGED
    
    
    
        data/lib/skn_utils.rb
    CHANGED
    
    | @@ -2,8 +2,10 @@ require "skn_utils/version" | |
| 2 2 | 
             
            require 'psych'
         | 
| 3 3 | 
             
            require 'json'
         | 
| 4 4 | 
             
            require 'erb'
         | 
| 5 | 
            +
            require 'date'
         | 
| 6 | 
            +
            require 'time'
         | 
| 5 7 | 
             
            unless defined?(Rails)
         | 
| 6 | 
            -
             | 
| 8 | 
            +
              require 'deep_merge'
         | 
| 7 9 | 
             
            end
         | 
| 8 10 | 
             
            require 'skn_utils/nested_result'
         | 
| 9 11 | 
             
            require 'skn_utils/result_bean'
         | 
| @@ -11,13 +13,15 @@ require 'skn_utils/page_controls' | |
| 11 13 | 
             
            require 'skn_utils/null_object'
         | 
| 12 14 | 
             
            require 'skn_utils/notifier_base'
         | 
| 13 15 | 
             
            require 'skn_utils/skn_configuration'
         | 
| 16 | 
            +
            require 'skn_utils/configurable'
         | 
| 14 17 | 
             
            require 'skn_utils/lists/linked_commons'
         | 
| 15 18 | 
             
            require 'skn_utils/lists/link_node'
         | 
| 16 19 | 
             
            require 'skn_utils/lists/linked_list'
         | 
| 17 20 | 
             
            require 'skn_utils/lists/doubly_linked_list'
         | 
| 18 21 | 
             
            require 'skn_utils/lists/circular_linked_list'
         | 
| 19 | 
            -
            require 'skn_utils/ | 
| 20 | 
            -
            require 'skn_utils/exploring/ | 
| 22 | 
            +
            # require 'skn_utils/business_services/year_month'
         | 
| 23 | 
            +
            # require 'skn_utils/exploring/commander'
         | 
| 24 | 
            +
            # require 'skn_utils/exploring/action_service'
         | 
| 21 25 | 
             
            # require 'skn_utils/exploring/configuration'
         | 
| 22 26 | 
             
            require 'skn_hash'
         | 
| 23 27 | 
             
            require 'skn_settings'
         | 
| @@ -0,0 +1,49 @@ | |
| 1 | 
            +
            ##
         | 
| 2 | 
            +
            # spec/lib/skn_utils/node_based_linked_list_spec.rb
         | 
| 3 | 
            +
            #
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            RSpec.describe SknUtils::BusinessServices::YearMonth, "Year Month Calculator " do
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              let(:basic) { described_class.new(2017, 1) }
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              context "Normal Operations " do
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                it "No params" do
         | 
| 12 | 
            +
                  expect{described_class.new}.to raise_error(ArgumentError)
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
                it "With Params" do
         | 
| 15 | 
            +
                  expect(basic).to be_a described_class
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
                it "#beginning_of month to be correct. " do
         | 
| 18 | 
            +
                  expect(basic.beginning_of).to be_a Time
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
                it "#end_of month to be correct. " do
         | 
| 21 | 
            +
                  expect(basic.end_of).to be_a Time
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
                it "#month to equal 3." do
         | 
| 24 | 
            +
                  expect(basic.month).to eq(1)
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
                it "#year to equal 2017." do
         | 
| 27 | 
            +
                  expect(basic.year).to eq(2017)
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
                it "#next.month to equal 2." do
         | 
| 30 | 
            +
                  expect(basic.next.month).to eq(2)
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
                it "Comparisons are correct." do
         | 
| 33 | 
            +
                  expect(described_class.new(2017,1)).to eq(described_class.new(2017,1))
         | 
| 34 | 
            +
                  expect(described_class.new(2017,2)).to be > (described_class.new(2017,1))
         | 
| 35 | 
            +
                  expect(described_class.new(2017,1)).to be < (described_class.new(2017,2))
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              context "Range Operations " do
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                it "Can be represented in a Range object.  " do
         | 
| 42 | 
            +
                  range = described_class.new(2017, 1)..described_class.new(2017, 9)
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                  expect(range).to  include(described_class.new(2017, 2))
         | 
| 45 | 
            +
                  expect(range).to  include(described_class.new(2017, 7))
         | 
| 46 | 
            +
                end
         | 
| 47 | 
            +
              end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            end
         | 
| @@ -0,0 +1,57 @@ | |
| 1 | 
            +
            ##
         | 
| 2 | 
            +
            # spec/lib/skn_utils/exploring/configuration_spec.rb
         | 
| 3 | 
            +
            #
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            class MyApp
         | 
| 6 | 
            +
              include SknUtils::Configurable.with(:app_id, :title, :cookie_name)
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              def null_value
         | 
| 9 | 
            +
                @app_id.dup
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
            end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            module MyMod
         | 
| 14 | 
            +
              include SknUtils::Configurable.with(:app_id, :title, :cookie_name)
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              def self.null_value
         | 
| 17 | 
            +
                @@app_id.dup
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
            end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            MyApp.configure do
         | 
| 22 | 
            +
                   app_id 'some app'
         | 
| 23 | 
            +
                    title 'My Title'
         | 
| 24 | 
            +
              cookie_name 'Chocolate'
         | 
| 25 | 
            +
            end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            MyMod.configure do
         | 
| 28 | 
            +
                   app_id 'some module'
         | 
| 29 | 
            +
                    title 'Some Title'
         | 
| 30 | 
            +
              cookie_name 'Caramel'
         | 
| 31 | 
            +
            end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
             | 
| 34 | 
            +
            describe SknUtils::Configurable, "Gem Configuration module." do
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              let(:my_app) { MyApp.new }
         | 
| 37 | 
            +
             | 
| 38 | 
            +
             | 
| 39 | 
            +
              context "Operational Features. " do
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                it "my_app#config.title returns expected value. " do
         | 
| 42 | 
            +
                  expect( MyApp.config.title ).to eq( "My Title" )
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
                it "my_app#config.app_id returns expected value. " do
         | 
| 45 | 
            +
                  expect( MyApp.config.app_id ).to eq( "some app" )
         | 
| 46 | 
            +
                end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                it "MyMod#config.app_id  returns expected value. " do
         | 
| 49 | 
            +
                  expect( MyMod.config.app_id ).to eq( "some module" )
         | 
| 50 | 
            +
                end
         | 
| 51 | 
            +
                it "MyMod#config.cookie_name returns expected value. " do
         | 
| 52 | 
            +
                  expect( MyMod.config.cookie_name ).to eq( 'Caramel' )
         | 
| 53 | 
            +
                end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
            end
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: skn_utils
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 3.3. | 
| 4 | 
            +
              version: 3.3.12
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - James Scott Jr
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017-08- | 
| 11 | 
            +
            date: 2017-08-24 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: deep_merge
         | 
| @@ -134,6 +134,8 @@ files: | |
| 134 134 | 
             
            - lib/skn_hash.rb
         | 
| 135 135 | 
             
            - lib/skn_settings.rb
         | 
| 136 136 | 
             
            - lib/skn_utils.rb
         | 
| 137 | 
            +
            - lib/skn_utils/business_services/year_month.rb
         | 
| 138 | 
            +
            - lib/skn_utils/configurable.rb
         | 
| 137 139 | 
             
            - lib/skn_utils/exploring/action_service.rb
         | 
| 138 140 | 
             
            - lib/skn_utils/exploring/commander.rb
         | 
| 139 141 | 
             
            - lib/skn_utils/exploring/configuration.rb
         | 
| @@ -154,6 +156,8 @@ files: | |
| 154 156 | 
             
            - spec/factories/settings/test.local.yml
         | 
| 155 157 | 
             
            - spec/factories/settings/test.yml
         | 
| 156 158 | 
             
            - spec/lib/skn_settings_spec.rb
         | 
| 159 | 
            +
            - spec/lib/skn_utils/business_services/year_month_spec.rb
         | 
| 160 | 
            +
            - spec/lib/skn_utils/configurable_spec.rb
         | 
| 157 161 | 
             
            - spec/lib/skn_utils/exploring/action_service_spec.rb
         | 
| 158 162 | 
             
            - spec/lib/skn_utils/exploring/commander_spec.rb
         | 
| 159 163 | 
             
            - spec/lib/skn_utils/exploring/configuration_spec.rb
         | 
| @@ -200,6 +204,8 @@ test_files: | |
| 200 204 | 
             
            - spec/factories/settings/test.local.yml
         | 
| 201 205 | 
             
            - spec/factories/settings/test.yml
         | 
| 202 206 | 
             
            - spec/lib/skn_settings_spec.rb
         | 
| 207 | 
            +
            - spec/lib/skn_utils/business_services/year_month_spec.rb
         | 
| 208 | 
            +
            - spec/lib/skn_utils/configurable_spec.rb
         | 
| 203 209 | 
             
            - spec/lib/skn_utils/exploring/action_service_spec.rb
         | 
| 204 210 | 
             
            - spec/lib/skn_utils/exploring/commander_spec.rb
         | 
| 205 211 | 
             
            - spec/lib/skn_utils/exploring/configuration_spec.rb
         |