Class: Newsmlg2::Builder
- Inherits:
-
Object
- Object
- Newsmlg2::Builder
- Defined in:
- lib/newsmlg2/builder.rb,
lib/newsmlg2/builder/node.rb
Overview
Generic, reflection-driven builder DSL: node methods are generated from each model's lutaml-model attribute metadata, so every current and future Newsmlg2 model is buildable without per-class builder code.
doc = Newsmlg2.build_news_item(guid: "...", lang: "en-GB") do |item|
item. do ||
.item_class qcode: "ninat:text"
.provider qcode: "nprov:acme" do |p|
p.name "Acme News Agency"
end
.version_created "2026-08-30T12:00:00+00:00"
end
item. do |cm|
cm.urgency 2
cm.headline "Volcano erupts"
cm.subject qcode: "medtop:20000962" do |s|
s.name "Volcano"
end
end
end
doc.to_xml # => Newsmlg2::Document
Defined Under Namespace
Classes: Node
Constant Summary collapse
- UNSET =
Object.new.freeze
Class Method Summary collapse
-
.build(klass, attributes = {}, &block) ⇒ Object
Builds any item model and returns a Document.
- .build_catalog_item(**attributes) ⇒ Object
- .build_concept_item(**attributes) ⇒ Object
- .build_knowledge_item(**attributes) ⇒ Object
- .build_news_item(**attributes) ⇒ Object
- .build_news_message(**attributes) ⇒ Object
- .build_package_item(**attributes) ⇒ Object
- .build_planning_item(**attributes) ⇒ Object
Class Method Details
.build(klass, attributes = {}, &block) ⇒ Object
Builds any item model and returns a Document.
33 34 35 36 37 38 |
# File 'lib/newsmlg2/builder.rb', line 33 def build(klass, attributes = {}, &block) attributes = attributes.transform_keys(lang: :xml_lang) model = klass.new(attributes) Builder::Node.new(model).apply(&block) if block Document.new(model) end |
.build_catalog_item(**attributes) ⇒ Object
56 57 58 |
# File 'lib/newsmlg2/builder.rb', line 56 def build_catalog_item(**attributes, &) build(Newsmlg2::CatalogItem, attributes, &) end |
.build_concept_item(**attributes) ⇒ Object
48 49 50 |
# File 'lib/newsmlg2/builder.rb', line 48 def build_concept_item(**attributes, &) build(Newsmlg2::ConceptItem, attributes, &) end |
.build_knowledge_item(**attributes) ⇒ Object
52 53 54 |
# File 'lib/newsmlg2/builder.rb', line 52 def build_knowledge_item(**attributes, &) build(Newsmlg2::KnowledgeItem, attributes, &) end |
.build_news_item(**attributes) ⇒ Object
40 41 42 |
# File 'lib/newsmlg2/builder.rb', line 40 def build_news_item(**attributes, &) build(Newsmlg2::NewsItem, attributes, &) end |
.build_news_message(**attributes) ⇒ Object
64 65 66 |
# File 'lib/newsmlg2/builder.rb', line 64 def (**attributes, &) build(Newsmlg2::NewsMessage, attributes, &) end |
.build_package_item(**attributes) ⇒ Object
44 45 46 |
# File 'lib/newsmlg2/builder.rb', line 44 def build_package_item(**attributes, &) build(Newsmlg2::PackageItem, attributes, &) end |
.build_planning_item(**attributes) ⇒ Object
60 61 62 |
# File 'lib/newsmlg2/builder.rb', line 60 def build_planning_item(**attributes, &) build(Newsmlg2::PlanningItem, attributes, &) end |