Sha256: 5a7c268dbaaddf6789f1e3c90725990a0fdc77bf5d0173f7fde6a419e007fb62

Contents?: true

Size: 972 Bytes

Versions: 3

Compression:

Stored size: 972 Bytes

Contents

module CSL
  class Style
    
    # The Group rendering element must contain one or more rendering
    # element (with the exception of {Layout}). Group nodes may carry the
    # delimiter attribute to separate their child elements, as well as
    # affixes and display attributes (applied to the output of the group
    # as a whole) and formatting attributes (transmitted to the enclosed
    # elements).
    #
    # Groups implicitly act as a conditionals: a Group and its child
    # elements are suppressed if a) at least one rendering element in
    # the Group calls a variable (either directly or via a macro), and
    # b) all variables that are called are empty.
    class Group < Node
      attr_struct(*Schema.attr(:formatting, :affixes, :delimiter))
      
      def delimiter
        attributes.fetch(:delimiter, '')
      end

      private
      
      def added_child(node)
        node.attributes.merge formatting_options
      end
    end
    
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
csl-1.0.2 lib/csl/style/group.rb
csl-1.0.1 lib/csl/style/group.rb
csl-1.0.0 lib/csl/style/group.rb