Class: Expressir::Express::Formatter
- Inherits:
-
Object
- Object
- Expressir::Express::Formatter
- Includes:
- Expressir::Express::Formatters::DataTypesFormatter, Expressir::Express::Formatters::DeclarationsFormatter, Expressir::Express::Formatters::ExpressionsFormatter, Expressir::Express::Formatters::LiteralsFormatter, Expressir::Express::Formatters::ReferencesFormatter, Expressir::Express::Formatters::RemarkFormatter, Expressir::Express::Formatters::RemarkItemFormatter, Expressir::Express::Formatters::StatementsFormatter, Expressir::Express::Formatters::SupertypeExpressionsFormatter
- Defined in:
- lib/expressir/express/formatter.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#no_remarks ⇒ Object
Returns the value of attribute no_remarks.
Class Method Summary collapse
- .format(node) ⇒ Object
- .format_registry ⇒ Object
- .register_formatter(model_class, method_name) ⇒ Object
Instance Method Summary collapse
- #format(node) ⇒ Object
- #format_exp_file(node) ⇒ Object
- #format_noop(_node) ⇒ Object
- #format_repository(node) ⇒ Object
- #indent(str) ⇒ Object
-
#initialize(no_remarks: false) ⇒ Formatter
constructor
A new instance of Formatter.
Methods included from Expressir::Express::Formatters::DeclarationsFormatter
#format_declarations_attribute, #format_declarations_constant, #format_declarations_entity, #format_declarations_function, #format_declarations_informal_proposition_rule, #format_declarations_interface, #format_declarations_interface_item, #format_declarations_parameter, #format_declarations_procedure, #format_declarations_rule, #format_declarations_schema, #format_declarations_schema_head, #format_declarations_schema_version, #format_declarations_subtype_constraint, #format_declarations_type, #format_declarations_unique_rule, #format_declarations_variable, #format_declarations_where_rule, included
Methods included from Expressir::Express::Formatters::DataTypesFormatter
#format_data_types_aggregate, #format_data_types_array, #format_data_types_bag, #format_data_types_binary, #format_data_types_boolean, #format_data_types_enumeration, #format_data_types_enumeration_item, #format_data_types_generic, #format_data_types_generic_entity, #format_data_types_integer, #format_data_types_list, #format_data_types_logical, #format_data_types_number, #format_data_types_real, #format_data_types_select, #format_data_types_set, #format_data_types_string, included
Methods included from Expressir::Express::Formatters::ExpressionsFormatter
#format_expressions_aggregate_initializer, #format_expressions_aggregate_initializer_item, #format_expressions_binary_expression, #format_expressions_entity_constructor, #format_expressions_function_call, #format_expressions_interval, #format_expressions_query_expression, #format_expressions_unary_expression, included
Methods included from Expressir::Express::Formatters::StatementsFormatter
#format_statements_alias, #format_statements_assignment, #format_statements_case, #format_statements_case_action, #format_statements_compound, #format_statements_escape, #format_statements_if, #format_statements_null, #format_statements_procedure_call, #format_statements_repeat, #format_statements_return, #format_statements_skip, included
Methods included from Expressir::Express::Formatters::SupertypeExpressionsFormatter
#format_supertype_expressions_binary_supertype_expression, #format_supertype_expressions_oneof_supertype_expression, included
Methods included from Expressir::Express::Formatters::ReferencesFormatter
#format_references_attribute_reference, #format_references_group_reference, #format_references_index_reference, #format_references_simple_reference, included
Methods included from Expressir::Express::Formatters::LiteralsFormatter
#format_literals_binary, #format_literals_integer, #format_literals_logical, #format_literals_real, #format_literals_string, included
Methods included from Expressir::Express::Formatters::RemarkFormatter
#format_end_scope_remark, #format_inline_tail_remark, #format_preamble_remark, #format_preamble_remarks, #format_remark, #format_remarks, #format_untagged_remark
Methods included from Expressir::Express::Formatters::RemarkItemFormatter
Constructor Details
#initialize(no_remarks: false) ⇒ Formatter
Returns a new instance of Formatter.
73 74 75 |
# File 'lib/expressir/express/formatter.rb', line 73 def initialize(no_remarks: false) @no_remarks = no_remarks end |
Instance Attribute Details
#no_remarks ⇒ Object
Returns the value of attribute no_remarks.
71 72 73 |
# File 'lib/expressir/express/formatter.rb', line 71 def no_remarks @no_remarks end |
Class Method Details
.format(node) ⇒ Object
77 78 79 |
# File 'lib/expressir/express/formatter.rb', line 77 def self.format(node) new.format(node) end |
.format_registry ⇒ Object
7 8 9 |
# File 'lib/expressir/express/formatter.rb', line 7 def self.format_registry @format_registry || superclass&.format_registry end |
.register_formatter(model_class, method_name) ⇒ Object
11 12 13 |
# File 'lib/expressir/express/formatter.rb', line 11 def self.register_formatter(model_class, method_name) @format_registry[model_class] = method_name end |
Instance Method Details
#format(node) ⇒ Object
81 82 83 84 85 86 87 88 89 |
# File 'lib/expressir/express/formatter.rb', line 81 def format(node) return "" if node.nil? handler = self.class.format_registry[node.class] return public_send(handler, node) if handler warn "#{node.class.name} format not implemented" "" end |
#format_exp_file(node) ⇒ Object
100 101 102 103 |
# File 'lib/expressir/express/formatter.rb', line 100 def format_exp_file(node) result = node.schemas&.map { |x| format(x) }&.join("\n\n") result ? "#{result}\n" : "" end |
#format_noop(_node) ⇒ Object
91 92 93 |
# File 'lib/expressir/express/formatter.rb', line 91 def format_noop(_node) "" end |
#format_repository(node) ⇒ Object
95 96 97 98 |
# File 'lib/expressir/express/formatter.rb', line 95 def format_repository(node) result = node.files&.map { |f| format(f) }&.join("\n\n") result ? "#{result}\n" : "" end |
#indent(str) ⇒ Object
105 106 107 108 109 |
# File 'lib/expressir/express/formatter.rb', line 105 def indent(str) return if str.nil? str.split("\n").map { |x| "#{INDENT}#{x}" }.join("\n") end |