Class: RDF::Tabular::Format

Inherits:
Format
  • Object
show all
Defined in:
lib/rdf/tabular/format.rb

Overview

Tabular Data/CSV format specification.

Examples:

Obtaining a Tabular format class

RDF::Format.for(:tabular)        #=> RDF::Tabular::Format
RDF::Format.for(:csv)            #=> RDF::Tabular::Format
RDF::Format.for(:tsv)            #=> RDF::Tabular::Format
RDF::Format.for("etc/foaf.csv")
RDF::Format.for("etc/foaf.tsv")
RDF::Format.for(file_name:      "etc/foaf.csv")
RDF::Format.for(file_name:      "etc/foaf.tsv")
RDF::Format.for(file_extension: "csv")
RDF::Format.for(file_extension: "tsv")
RDF::Format.for(content_type:   "text/csv")
RDF::Format.for(content_type:   "text/tab-separated-values")
RDF::Format.for(content_type:   "application/csvm+json")

Obtaining serialization format MIME types

RDF::Format.content_types      #=> {"text/csv" => [RDF::Tabular::Format]}

Obtaining serialization format file extension mappings

RDF::Format.file_extensions    #=> {:csv => "text/csv"}

See Also:

Class Method Summary collapse

Class Method Details

.cli_commandsHash{Symbol => Lambda(Array, Hash)}

Hash of CLI commands appropriate for this format

Returns:

  • (Hash{Symbol => Lambda(Array, Hash)})


53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/rdf/tabular/format.rb', line 53

def self.cli_commands
  {
    "tabular-json": {
      description: "Serialize using tabular JSON",
      parse: false,
      filter: {format: :tabular},  # Only shows output format set
      option_use: {output_format: :disabled},
      help: "tabular-json --input-format tabular files ...\nGenerate tabular JSON output, rather than RDF for Tabular data",
      lambda: ->(argv, opts) do
        raise ArgumentError, "Outputting Tabular JSON only allowed when input format is tabular." unless opts[:format] == :tabular
        out = opts[:output] || $stdout
        out.set_encoding(Encoding::UTF_8) if RUBY_PLATFORM == "java"
        RDF::CLI.parse(argv, **opts) do |reader|
          out.puts reader.to_json
        end
      end
    }
  }
end

.detect(sample) ⇒ Boolean

Sample detection to see if it matches JSON-LD

Use a text sample to detect the format of an input file. Sub-classes implement a matcher sufficient to detect probably format matches, including disambiguating between other similar formats.

Parameters:

  • sample (String)

    Beginning several bytes (~ 1K) of input.

Returns:

  • (Boolean)


46
47
48
# File 'lib/rdf/tabular/format.rb', line 46

def self.detect(sample)
  !!sample.match(/^(?:(?:\w )+,(?:\w ))$/)
end