Sha256: 0c7f628445e4131fa3040022e3ee9b5de75c5f31634c4cb5e838d172d0d3e6c5

Contents?: true

Size: 1.32 KB

Versions: 7

Compression:

Stored size: 1.32 KB

Contents

# {
#   "id": "intake_questionnaire",
#   "display_name": "Intake Questionnaire at Baseline Visit",
#   "code_book": "Baseline-Visit-Intake-Questionnaire.pdf"
# }

require 'spout/models/record'

module Spout
  module Models
    class Form < Spout::Models::Record

      attr_accessor :id, :display_name, :code_book
      attr_accessor :errors

      def initialize(file_name, dictionary_root)
        @errors = []
        @id     = file_name.to_s.gsub(/^(.*)\/|\.json$/, '').downcase
        @folder = file_name.to_s.gsub(/^#{dictionary_root}\/forms\/|#{@id}\.json$/, '')

        json = begin
          JSON.parse(File.read(file_name))
        rescue => e
          form_name = file_name.to_s.gsub(/^(.*)\/|\.json$/, '').downcase
          @errors << "Error Parsing #{form_name}.json: #{e.message}"
          nil
        end

        if json and json.kind_of? Hash
          %w( display_name code_book ).each do |method|
            instance_variable_set("@#{method}", json[method])
          end

          @errors << "'id': #{json['id'].inspect} does not match filename #{@id.inspect}" if @id != json['id']
        elsif json
          @errors << "Form must be a valid hash in the following format: {\n\"id\": \"FORM_ID\",\n  \"display_name\": \"FORM DISPLAY NAME\",\n  \"code_book\": \"FORMPDF.pdf\"\n}"
        end

      end

    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
spout-0.10.2 lib/spout/models/form.rb
spout-0.10.1 lib/spout/models/form.rb
spout-0.10.0 lib/spout/models/form.rb
spout-0.10.0.rc3 lib/spout/models/form.rb
spout-0.10.0.rc2 lib/spout/models/form.rb
spout-0.10.0.rc lib/spout/models/form.rb
spout-0.10.0.beta10 lib/spout/models/form.rb