Sha256: e26faa02e13d06753d3e66180eae4526cdd032aa3b102014274249f07b44d4bf

Contents?: true

Size: 859 Bytes

Versions: 12

Compression:

Stored size: 859 Bytes

Contents

module RDF
  class Node
    # Odd case of appending to a BNode identifier
    def +(value)
      Node.new(id + value.to_s)
    end
  end
end

class Array
  # Sort values, but impose special keyword ordering
  # @yield a, b
  # @yieldparam [Object] a
  # @yieldparam [Object] b
  # @yieldreturn [Integer]
  # @return [Array]
  KW_ORDER = %w(@base @id @value @type @language @vocab @container @graph @list @set @index).freeze

  # Order, considering keywords to come before other strings
  def kw_sort
    self.sort do |a, b|
      a = "@#{KW_ORDER.index(a)}" if KW_ORDER.include?(a)
      b = "@#{KW_ORDER.index(b)}" if KW_ORDER.include?(b)
      a <=> b
    end
  end

  # Order terms, length first, then lexographically
  def term_sort
    self.sort do |a, b|
      len_diff = a.length <=> b.length
      len_diff == 0 ? a <=> b : len_diff
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
json-ld-2.0.0.1 lib/json/ld/extensions.rb
json-ld-2.0.0 lib/json/ld/extensions.rb
json-ld-1.99.2 lib/json/ld/extensions.rb
json-ld-2.0.0.beta3 lib/json/ld/extensions.rb
json-ld-1.99.1 lib/json/ld/extensions.rb
json-ld-2.0.0.beta2 lib/json/ld/extensions.rb
json-ld-2.0.0.beta1 lib/json/ld/extensions.rb
json-ld-1.1.11.1 lib/json/ld/extensions.rb
json-ld-1.99.0 lib/json/ld/extensions.rb
json-ld-1.1.11 lib/json/ld/extensions.rb
json-ld-1.1.10 lib/json/ld/extensions.rb
json-ld-1.1.9 lib/json/ld/extensions.rb