Class: Pocketbook::Theme::Manifest

Inherits:
Object
  • Object
show all
Defined in:
lib/pocketbook/theme/manifest.rb

Defined Under Namespace

Classes: Defaults, StyleCatalog

Constant Summary collapse

OPTIONAL_FIELDS =
%w[name version template styles defaults].freeze
SUPPORTED_FIELDS =
OPTIONAL_FIELDS
DEFAULT_STYLE_NAME =
"default"
SUPPORTED_DEFAULTS =
%w[style title subtitle author publisher backcover_text size].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path:) ⇒ Manifest

Returns a new instance of Manifest.



154
155
156
157
158
159
160
# File 'lib/pocketbook/theme/manifest.rb', line 154

def initialize(path:)
  @path = path
  @values = load_manifest(path)
  validate_manifest!
  @defaults = Defaults.new(@values["defaults"], path)
  @style_catalog = StyleCatalog.new(@values["styles"], path)
end

Instance Attribute Details

#pathObject (readonly)

Returns the value of attribute path.



144
145
146
# File 'lib/pocketbook/theme/manifest.rb', line 144

def path
  @path
end

Class Method Details

.supported_defaultsObject



150
151
152
# File 'lib/pocketbook/theme/manifest.rb', line 150

def self.supported_defaults
  SUPPORTED_DEFAULTS
end

.supported_fieldsObject



146
147
148
# File 'lib/pocketbook/theme/manifest.rb', line 146

def self.supported_fields
  SUPPORTED_FIELDS
end

Instance Method Details

#available_stylesObject



178
179
180
# File 'lib/pocketbook/theme/manifest.rb', line 178

def available_styles
  @style_catalog.available_styles
end

#default_style_nameObject



190
191
192
# File 'lib/pocketbook/theme/manifest.rb', line 190

def default_style_name
  @defaults.style_name
end

#defaults_metadataObject



194
195
196
# File 'lib/pocketbook/theme/manifest.rb', line 194

def 
  @defaults.
end

#name(default_name) ⇒ Object



162
163
164
# File 'lib/pocketbook/theme/manifest.rb', line 162

def name(default_name)
  @values.fetch("name", default_name)
end

#style?(style_name) ⇒ Boolean

Returns:

  • (Boolean)


182
183
184
# File 'lib/pocketbook/theme/manifest.rb', line 182

def style?(style_name)
  @style_catalog.style?(style_name)
end

#style_paths_for(style_name) ⇒ Object



186
187
188
# File 'lib/pocketbook/theme/manifest.rb', line 186

def style_paths_for(style_name)
  @style_catalog.paths_for(style_name)
end

#styles_declared?Boolean

Returns:

  • (Boolean)


174
175
176
# File 'lib/pocketbook/theme/manifest.rb', line 174

def styles_declared?
  !@style_catalog.available_styles.empty?
end

#template_referenceObject



170
171
172
# File 'lib/pocketbook/theme/manifest.rb', line 170

def template_reference
  normalize_optional_string(@values["template"])
end

#version(default_version = "0.1.0") ⇒ Object



166
167
168
# File 'lib/pocketbook/theme/manifest.rb', line 166

def version(default_version = "0.1.0")
  @values.fetch("version", default_version)
end