Sha256: 8d8e478fa0e7833242228c06c4bb16c5437d7182e97c16611912d45e6182fa0a
Contents?: true
Size: 1.26 KB
Versions: 2
Compression:
Stored size: 1.26 KB
Contents
module Senec module Local class State def initialize(connection:) @connection = connection end attr_reader :connection # Extract state names from JavaScript file, which is formatted like this: # # var system_state_name = { # 0: "FIRST STATE", # 1: "SECOND STATE", # ... # }; def names(language: :de) response(language:).match(FILE_REGEX)[0].split("\n").each_with_object({}) do |line, hash| key, value = line.match(LINE_REGEX)&.captures next unless key && value hash[key.to_i] = value end end private FILE_REGEX = /var system_state_name = \{(.*?)\};/m LINE_REGEX = /(\d+)\s*:\s*"(.*)"/ def response(language:) res = connection.get url(language:) raise Error, res.message unless res.success? res.body end # Use the JavaScript file containing English/German/Italian names from the SENEC web interface def url(language:) case language when :en '/js/EN-en.js' when :de '/js/DE-de.js' when :it '/js/IT-it.js' else raise Error, "Language #{language} not supported" end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
senec-0.15.0 | lib/senec/local/state.rb |
senec-0.14.0 | lib/senec/local/state.rb |