Class: Thinreports::BasicReport::Core::Shape::Style::Base

Inherits:
Object
  • Object
show all
Includes:
Utils
Defined in:
lib/thinreports/basic_report/core/shape/style/base.rb

Direct Known Subclasses

Basic

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Utils

#blank_value?, #call_block_in, #deep_copy, included

Constructor Details

#initialize(format, default_styles = {}) ⇒ Base

Returns a new instance of Base.

Parameters:



56
57
58
59
60
61
62
# File 'lib/thinreports/basic_report/core/shape/style/base.rb', line 56

def initialize(format, default_styles = {})
  @format = format
  @styles = default_styles
  @base_styles = format.style || {}

  @accessible_styles = self.class.accessible_styles.dup
end

Instance Attribute Details

#accessible_stylesObject (readonly)

See Also:



52
53
54
# File 'lib/thinreports/basic_report/core/shape/style/base.rb', line 52

def accessible_styles
  @accessible_styles
end

#stylesHash

Returns:

  • (Hash)


50
51
52
# File 'lib/thinreports/basic_report/core/shape/style/base.rb', line 50

def styles
  @styles
end

Class Method Details

.accessible_stylesArray<Symbol>

Returns:

  • (Array<Symbol>)


40
41
42
# File 'lib/thinreports/basic_report/core/shape/style/base.rb', line 40

def accessible_styles
  @accessible_styles ||= []
end

.inherited(s) ⇒ Object



44
45
46
# File 'lib/thinreports/basic_report/core/shape/style/base.rb', line 44

def inherited(s)
  s.accessible_styles.concat(accessible_styles.dup)
end

.style_accessible(*style_methods) ⇒ Object

Parameters:

  • style_methods (Array<Symbol>)


35
36
37
# File 'lib/thinreports/basic_report/core/shape/style/base.rb', line 35

def style_accessible(*style_methods)
  accessible_styles.concat(style_methods)
end

.style_accessor(style_method, style) ⇒ void

This method returns an undefined value.

Parameters:

  • style_method (Symbol)
  • style (String)


15
16
17
18
# File 'lib/thinreports/basic_report/core/shape/style/base.rb', line 15

def style_accessor(style_method, style)
  style_reader(style_method, style)
  style_writer(style_method, style)
end

.style_reader(style_method, style) ⇒ Object

See Also:



21
22
23
24
25
# File 'lib/thinreports/basic_report/core/shape/style/base.rb', line 21

def style_reader(style_method, style)
  define_method(style_method) do
    read_internal_style(style)
  end
end

.style_writer(style_method, style) ⇒ Object

See Also:



28
29
30
31
32
# File 'lib/thinreports/basic_report/core/shape/style/base.rb', line 28

def style_writer(style_method, style)
  define_method(:"#{style_method}=") do |value|
    write_internal_style(style, value)
  end
end

Instance Method Details

#[](style_method) ⇒ Object

Parameters:

  • style_method (Symbol)

Returns:

  • (Object)


66
67
68
69
# File 'lib/thinreports/basic_report/core/shape/style/base.rb', line 66

def [](style_method)
  verify_style_method(style_method)
  send(style_method.to_sym)
end

#[]=(style_method, value) ⇒ Object

Parameters:

  • style_method (Symbol)
  • value (String, Number, Array<String, Number>)


73
74
75
76
# File 'lib/thinreports/basic_report/core/shape/style/base.rb', line 73

def []=(style_method, value)
  verify_style_method(style_method)
  send(:"#{style_method}=", value)
end

#copyself

Returns:

  • (self)


84
85
86
# File 'lib/thinreports/basic_report/core/shape/style/base.rb', line 84

def copy
  self.class.new(@format, @styles.empty? ? {} : deep_copy(@styles))
end

#finalized_stylesHash

Returns:

  • (Hash)


108
109
110
111
112
113
114
115
# File 'lib/thinreports/basic_report/core/shape/style/base.rb', line 108

def finalized_styles
  @finalized_styles ||=
    if @styles.empty?
      @base_styles.dup
    else
      @base_styles.merge(@styles)
    end
end

#has_style?(style_method) ⇒ Boolean

Parameters:

  • style_method (Symbol)

Returns:

  • (Boolean)


103
104
105
# File 'lib/thinreports/basic_report/core/shape/style/base.rb', line 103

def has_style?(style_method)
  accessible_styles.include?(style_method)
end

#identifierString

Returns:

  • (String)


79
80
81
# File 'lib/thinreports/basic_report/core/shape/style/base.rb', line 79

def identifier
  create_identifier(@styles)
end

#read_internal_style(style) ⇒ Object

Parameters:

  • style (String, Symbol)

Returns:

  • (Object)


90
91
92
93
# File 'lib/thinreports/basic_report/core/shape/style/base.rb', line 90

def read_internal_style(style)
  style = style.to_s
  @styles.key?(style) ? @styles[style] : @base_styles[style]
end

#write_internal_style(style, value) ⇒ Object

Parameters:

  • style (String, Symbol)
  • value (Object)


97
98
99
# File 'lib/thinreports/basic_report/core/shape/style/base.rb', line 97

def write_internal_style(style, value)
  @styles[style.to_s] = value
end