lib/cucumber/messages/meta.rb
# frozen_string_literal: true # The code was auto-generated by {this script}[https://github.com/cucumber/messages/blob/main/codegen/codegen.rb] module Cucumber module Messages ## # Represents the Meta message in Cucumber's {message protocol}[https://github.com/cucumber/messages]. ## # # * # This message contains meta information about the environment. Consumers can use # this for various purposes. ## class Meta < Message ## # * # The [SEMVER](https://semver.org/) version number of the protocol ## attr_reader :protocol_version ## # SpecFlow, Cucumber-JVM, Cucumber.js, Cucumber-Ruby, Behat etc. ## attr_reader :implementation ## # Java, Ruby, Node.js etc ## attr_reader :runtime ## # Windows, Linux, MacOS etc ## attr_reader :os ## # 386, arm, amd64 etc ## attr_reader :cpu attr_reader :ci def initialize( protocol_version: '', implementation: Product.new, runtime: Product.new, os: Product.new, cpu: Product.new, ci: nil ) @protocol_version = protocol_version @implementation = implementation @runtime = runtime @os = os @cpu = cpu @ci = ci super() end ## # Returns a new Meta from the given hash. # If the hash keys are camelCased, they are properly assigned to the # corresponding snake_cased attributes. # # Cucumber::Messages::Meta.from_h(some_hash) # => #<Cucumber::Messages::Meta:0x... ...> ## def self.from_h(hash) return nil if hash.nil? new( protocol_version: hash[:protocolVersion], implementation: Product.from_h(hash[:implementation]), runtime: Product.from_h(hash[:runtime]), os: Product.from_h(hash[:os]), cpu: Product.from_h(hash[:cpu]), ci: Ci.from_h(hash[:ci]) ) end end end end