lib/thinreports/layout/format.rb in thinreports-0.7.7 vs lib/thinreports/layout/format.rb in thinreports-0.8.0
- old
+ new
@@ -1,81 +1,80 @@
# coding: utf-8
require 'digest/sha1'
-module ThinReports
+module Thinreports
module Layout
-
- # @private
+
class Format < Core::Shape::Manager::Format
- config_reader :last_version => %w( version )
- config_reader :report_title => %w( config title )
- config_reader :page_paper_type => %w( config page paper-type ),
- :page_width => %w( config page width ),
- :page_height => %w( config page height ),
- :page_orientation => %w( config page orientation )
-
- config_checker 'user', :user_paper_type => %w( config page paper-type )
-
+ config_reader last_version: %w( version )
+ config_reader report_title: %w( config title )
+ config_reader page_paper_type: %w( config page paper-type ),
+ page_width: %w( config page width ),
+ page_height: %w( config page height ),
+ page_orientation: %w( config page orientation )
+
+ config_checker 'user', user_paper_type: %w( config page paper-type )
+
class << self
-
+
private
-
+
# @param [String] filename
# @param [Hash] options
# @option options [Boolean] :force (false)
def build_internal(filename, options = {})
build_once(filename, options[:force]) do |content, id|
raw_format = parse_json(content)
-
+
# Check the compatibility of specified layout file.
- unless ThinReports::Layout::Version.compatible?(raw_format['version'])
+ unless Thinreports::Layout::Version.compatible?(raw_format['version'])
info = [filename, raw_format['version'],
- ThinReports::Layout::Version.inspect_required_rules]
- raise ThinReports::Errors::IncompatibleLayoutFormat.new(*info)
+ Thinreports::Layout::Version.inspect_required_rules]
+ raise Thinreports::Errors::IncompatibleLayoutFormat.new(*info)
end
-
+
compact_format!(raw_format)
-
+
# Build and initialize format.
new(raw_format, id) do |f|
build_layout(f) do |type, shape_format|
Core::Shape::Format(type).build(shape_format)
end
clean(f.layout)
end
end
end
-
+
# @param [Hash] raw_format A parsed json.
def compact_format!(raw_format)
%w( finger-print state version ).each {|attr| raw_format.delete(attr) }
end
-
+
# @param [String] filename
# @param [Boolean] force (false)
def build_once(filename, force = false, &block)
content = read_format_file(filename)
-
+
if force
block.call(content, nil)
else
id = Digest::SHA1.hexdigest(content).to_sym
built_format_registry[id] ||= block.call(content, id)
end
end
-
+
# @param [String] filename
# @return [String]
def read_format_file(filename)
File.open(filename, 'r:UTF-8') {|f| f.read }
end
-
+
# @return [Hash]
def built_format_registry
@built_format_registry ||= {}
- end
+ end
end
end
-
+
end
end