Sha256: 0c8d54146439e1c75971b6d2e93a1f9fed546c9ecf4d598d01128ff4578414fd

Contents?: true

Size: 1.19 KB

Versions: 7

Compression:

Stored size: 1.19 KB

Contents

module Isoics
  class Note
    # @return [String]
    attr_reader :text, :ics_code

    # @param note [Hash]
    def initialize(note)
      @text, @ics_code = note.values_at(:text, :"ics-code")
    end

    # Fetch referenced ICS.
    # @return [Isoics::ICS]
    def ics
      Isoics.fetch ics_code if ics_code
    end
  end

  class ICS
    # @return [String]
    attr_reader :code, :fieldcode, :groupcode, :subgroupcode, :description,
      :description_full

    # @return [Array<Isoics::Note>]
    attr_reader :notes

    # @param ics_data [Hash]
    def initialize(fieldcode:, groupcode: nil, subgroupcode: nil)
      file_name = "#{__dir__}/../../ics/#{fieldcode.to_s}"
      file_name << "_#{groupcode}" if groupcode
      file_name << "_#{subgroupcode}" if subgroupcode 
      file_name << ".json"
      ics_data = JSON.parse File.read(file_name), symbolize_names: true

      @code, @fieldcode, @groupcode, @subgroupcode, @description,
          @description_full = ics_data.values_at(
        :code, :fieldcode, :groupcode, :subgroupcode, :description, :descriptionFull
      )

      @notes = if ics_data[:notes]
        ics_data[:notes].map { |n| Note.new n }
      else
        []
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
metanorma-cli-1.3.4 gems/ruby/2.6.0/gems/isoics-0.1.9/lib/isoics/ics.rb
metanorma-cli-1.3.3.1 gems/ruby/2.6.0/gems/isoics-0.1.9/lib/isoics/ics.rb
isoics-0.1.9 lib/isoics/ics.rb
isoics-0.1.8 lib/isoics/ics.rb
isoics-0.1.7 lib/isoics/ics.rb
isoics-0.1.6 lib/isoics/ics.rb
isoics-0.1.5 lib/isoics/ics.rb