Class: Mumukit::Sync::Store::Github::Schema::Field

Inherits:
OpenStruct
  • Object
show all
Defined in:
lib/mumukit/sync/store/github/schema.rb

Instance Method Summary collapse

Instance Method Details

#field_value_present?(document) ⇒ Boolean

Returns:

  • (Boolean)


97
98
99
# File 'lib/mumukit/sync/store/github/schema.rb', line 97

def field_value_present?(document)
  document[reverse_name].present?
end

#find_file_name(description, root) ⇒ Object

Reading fields from Github



114
115
116
117
118
119
120
121
122
123
# File 'lib/mumukit/sync/store/github/schema.rb', line 114

def find_file_name(description, root)
  files = Dir.glob("#{root}/#{name}.*")
  if files.length == 1
    files[0]
  elsif files.empty? && required
    raise Mumukit::Sync::SyncError, "Missing #{description} #{name} file"
  else
    nil
  end
end

#get_field_value(document) ⇒ Object



93
94
95
# File 'lib/mumukit/sync/store/github/schema.rb', line 93

def get_field_value(document)
  safe_transform.to.call document[reverse_name]
end

#get_file_extension(language) ⇒ Object



101
102
103
104
105
106
107
108
109
110
# File 'lib/mumukit/sync/store/github/schema.rb', line 101

def get_file_extension(language)
  case extension
  when :code then
    language[:extension]
  when :test then
    language[:test_extension]
  else
    extension
  end
end

#get_file_name(language) ⇒ Object



89
90
91
# File 'lib/mumukit/sync/store/github/schema.rb', line 89

def get_file_name(language)
  "#{name}.#{get_file_extension(language)}"
end

#get_file_patternObject

Writing fields to Github



85
86
87
# File 'lib/mumukit/sync/store/github/schema.rb', line 85

def get_file_pattern
  get_file_name extension: '*', test_extension: '*'
end

#read_field_file(description, root) ⇒ Object



125
126
127
# File 'lib/mumukit/sync/store/github/schema.rb', line 125

def read_field_file(description, root)
  find_file_name(description, root).try { |it| safe_transform.from.call it }
end

#reverse_nameObject



76
77
78
# File 'lib/mumukit/sync/store/github/schema.rb', line 76

def reverse_name
  reverse || name
end

#safe_transformObject



80
81
82
# File 'lib/mumukit/sync/store/github/schema.rb', line 80

def safe_transform
  transform || struct(to: proc { |it| it }, from: proc { |it| File.read(it) })
end