Class: Pubid::Rendering::RenderingContext

Inherits:
Object
  • Object
show all
Defined in:
lib/pubid/rendering/context.rb

Overview

Context object for flavor-specific and format-specific rendering rules

Encapsulates rendering rules that vary between flavors and between output formats (human-readable, URN, MR string). Components receive this context and render themselves accordingly — renderers and URN generators never reach into component internals.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(format: :human, stage_separator: "/", stage_separator_with_copublisher: " ", type_separator: "/", type_separator_with_prefix: " ", default_type_abbr: "IS", lang: :en, lang_single: false, with_language_code: :none, stage_format_long: false, with_date: true, annotated: false) ⇒ RenderingContext

Returns a new instance of RenderingContext.

Parameters:

  • format (Symbol) (defaults to: :human)

    output format: :human, :urn, or :mr

  • stage_separator (String) (defaults to: "/")

    separator before stage without copublisher

  • stage_separator_with_copublisher (String) (defaults to: " ")

    separator before stage with copublisher

  • type_separator (String) (defaults to: "/")

    separator before type (default)

  • type_separator_with_prefix (String) (defaults to: " ")

    separator before type when prefix exists

  • default_type_abbr (String) (defaults to: "IS")

    default type abbreviation to skip rendering

  • lang (Symbol) (defaults to: :en)

    language for rendering (:en or :fr)

  • lang_single (Boolean) (defaults to: false)

    use single char language format



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/pubid/rendering/context.rb', line 26

def initialize(format: :human,
               stage_separator: "/",
               stage_separator_with_copublisher: " ",
               type_separator: "/",
               type_separator_with_prefix: " ",
               default_type_abbr: "IS",
               lang: :en,
               lang_single: false,
               with_language_code: :none,
               stage_format_long: false,
               with_date: true,
               annotated: false)
  @format = format
  @stage_separator = stage_separator
  @stage_separator_with_copublisher = stage_separator_with_copublisher
  @type_separator = type_separator
  @type_separator_with_prefix = type_separator_with_prefix
  @default_type_abbr = default_type_abbr
  @lang = lang
  @lang_single = lang_single
  @with_language_code = with_language_code
  @stage_format_long = stage_format_long
  @with_date = with_date
  @annotated = annotated
end

Instance Attribute Details

#annotatedObject (readonly)

Returns the value of attribute annotated.



12
13
14
# File 'lib/pubid/rendering/context.rb', line 12

def annotated
  @annotated
end

#default_type_abbrObject (readonly)

Returns the value of attribute default_type_abbr.



12
13
14
# File 'lib/pubid/rendering/context.rb', line 12

def default_type_abbr
  @default_type_abbr
end

#formatObject (readonly)

Returns the value of attribute format.



12
13
14
# File 'lib/pubid/rendering/context.rb', line 12

def format
  @format
end

#langObject (readonly)

Returns the value of attribute lang.



12
13
14
# File 'lib/pubid/rendering/context.rb', line 12

def lang
  @lang
end

#lang_singleObject (readonly)

Returns the value of attribute lang_single.



12
13
14
# File 'lib/pubid/rendering/context.rb', line 12

def lang_single
  @lang_single
end

#stage_format_longObject (readonly)

Returns the value of attribute stage_format_long.



12
13
14
# File 'lib/pubid/rendering/context.rb', line 12

def stage_format_long
  @stage_format_long
end

#stage_separatorObject (readonly)

Returns the value of attribute stage_separator.



12
13
14
# File 'lib/pubid/rendering/context.rb', line 12

def stage_separator
  @stage_separator
end

#stage_separator_with_copublisherObject (readonly)

Returns the value of attribute stage_separator_with_copublisher.



12
13
14
# File 'lib/pubid/rendering/context.rb', line 12

def stage_separator_with_copublisher
  @stage_separator_with_copublisher
end

#type_separatorObject (readonly)

Returns the value of attribute type_separator.



12
13
14
# File 'lib/pubid/rendering/context.rb', line 12

def type_separator
  @type_separator
end

#type_separator_with_prefixObject (readonly)

Returns the value of attribute type_separator_with_prefix.



12
13
14
# File 'lib/pubid/rendering/context.rb', line 12

def type_separator_with_prefix
  @type_separator_with_prefix
end

#with_dateObject (readonly)

Returns the value of attribute with_date.



12
13
14
# File 'lib/pubid/rendering/context.rb', line 12

def with_date
  @with_date
end

#with_language_codeObject (readonly)

Returns the value of attribute with_language_code.



12
13
14
# File 'lib/pubid/rendering/context.rb', line 12

def with_language_code
  @with_language_code
end

Class Method Details

.from_format(format) ⇒ Object



155
156
157
158
159
160
161
162
163
164
165
# File 'lib/pubid/rendering/context.rb', line 155

def self.from_format(format)
  case format
  when :ref_num_short then ref_num_short
  when :ref_num_long then ref_num_long
  when :ref_dated then ref_dated
  when :ref_dated_long then ref_dated
  when :ref_undated then ref_undated
  when :ref_undated_long then ref_undated_long
  else ref_dated
  end
end

.iecRenderingContext

IEC rendering context singleton

Returns:



102
103
104
105
106
107
108
109
110
# File 'lib/pubid/rendering/context.rb', line 102

def self.iec
  @iec ||= new(
    stage_separator: "/",
    stage_separator_with_copublisher: " ",
    type_separator: "/",
    type_separator_with_prefix: " ",
    default_type_abbr: "IS",
  )
end

.isoRenderingContext

ISO rendering context singleton

Returns:



90
91
92
93
94
95
96
97
98
# File 'lib/pubid/rendering/context.rb', line 90

def self.iso
  @iso ||= new(
    stage_separator: "/",
    stage_separator_with_copublisher: " ",
    type_separator: "/",
    type_separator_with_prefix: " ",
    default_type_abbr: "IS",
  )
end

.nistRenderingContext

NIST rendering context singleton

Returns:



114
115
116
117
118
119
120
121
122
# File 'lib/pubid/rendering/context.rb', line 114

def self.nist
  @nist ||= new(
    stage_separator: "",
    stage_separator_with_copublisher: " ",
    type_separator: " ",
    type_separator_with_prefix: " ",
    default_type_abbr: "",
  )
end

.ref_datedObject



140
141
142
143
# File 'lib/pubid/rendering/context.rb', line 140

def self.ref_dated
  new(with_language_code: :none, stage_format_long: false,
      with_date: true)
end

.ref_num_longObject



136
137
138
# File 'lib/pubid/rendering/context.rb', line 136

def self.ref_num_long
  new(with_language_code: :iso, stage_format_long: true, with_date: true)
end

.ref_num_shortObject

Format factory methods — replace RenderingStyle hierarchy



131
132
133
134
# File 'lib/pubid/rendering/context.rb', line 131

def self.ref_num_short
  new(with_language_code: :single, stage_format_long: false,
      with_date: true)
end

.ref_undatedObject



145
146
147
148
# File 'lib/pubid/rendering/context.rb', line 145

def self.ref_undated
  new(with_language_code: :none, stage_format_long: false,
      with_date: false)
end

.ref_undated_longObject



150
151
152
153
# File 'lib/pubid/rendering/context.rb', line 150

def self.ref_undated_long
  new(with_language_code: :none, stage_format_long: true,
      with_date: false)
end

.urnRenderingContext

URN rendering context: components emit URN-format fragments

Returns:



126
127
128
# File 'lib/pubid/rendering/context.rb', line 126

def self.urn
  @urn ||= new(format: :urn)
end

Instance Method Details

#human?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/pubid/rendering/context.rb', line 56

def human?
  @format == :human
end

#mr?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/pubid/rendering/context.rb', line 60

def mr?
  @format == :mr
end

#should_render_type?(type_abbr) ⇒ Boolean

Check if type should be rendered (not default)

Parameters:

  • type_abbr (String)

    type abbreviation to check

Returns:

  • (Boolean)

    true if type should be rendered



84
85
86
# File 'lib/pubid/rendering/context.rb', line 84

def should_render_type?(type_abbr)
  type_abbr && type_abbr != @default_type_abbr
end

#stage_separator_for(has_copublisher:) ⇒ String

Get the appropriate stage separator based on whether there’s a copublisher

Parameters:

  • has_copublisher (Boolean)

    whether identifier has copublisher

Returns:

  • (String)

    the separator to use



68
69
70
# File 'lib/pubid/rendering/context.rb', line 68

def stage_separator_for(has_copublisher:)
  has_copublisher ? @stage_separator_with_copublisher : @stage_separator
end

#type_separator_for(has_prefix:) ⇒ String

Get the appropriate type separator based on whether there’s a prefix

Parameters:

  • has_prefix (Boolean)

    whether there’s a prefix (stage or copublisher)

Returns:

  • (String)

    the separator to use



76
77
78
# File 'lib/pubid/rendering/context.rb', line 76

def type_separator_for(has_prefix:)
  has_prefix ? @type_separator_with_prefix : @type_separator
end

#urn?Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/pubid/rendering/context.rb', line 52

def urn?
  @format == :urn
end