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)


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

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

#find_file_name(root) ⇒ Object

Reading fields from Github



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

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

#get_field_value(document) ⇒ Object



82
83
84
# File 'lib/mumukit/sync/store/github/schema.rb', line 82

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

#get_file_extension(language) ⇒ Object



90
91
92
93
94
95
96
97
98
99
# File 'lib/mumukit/sync/store/github/schema.rb', line 90

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

Writing fields to Github



78
79
80
# File 'lib/mumukit/sync/store/github/schema.rb', line 78

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

#read_field_file(root) ⇒ Object



114
115
116
# File 'lib/mumukit/sync/store/github/schema.rb', line 114

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

#reverse_nameObject



68
69
70
# File 'lib/mumukit/sync/store/github/schema.rb', line 68

def reverse_name
  reverse || name
end

#safe_transformObject



72
73
74
# File 'lib/mumukit/sync/store/github/schema.rb', line 72

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