我想在我的scss中获取yaml(.yml)文件的内容。目的是使yaml文件的内容可作为SCSS映射使用,以便读取和迭代值。通过ruby解析yaml文件内容到scss
到目前为止,我有这样的:
SCSS文件:
$ranges: yaml_load('path/to/file');
ruby文件(的this gem被攻击的版本):
require 'yaml'
module Sass::Script::Functions
def yaml_load(file_name)
# Required because the filename is escaped: "\"path/to/file.yml\""
file_name = file_name.to_s[1..-2]
if (File.file?(file_name))
file_content = YAML::load_file(file_name)
if (file_content.is_a?(Hash))
p 'is indeed a hash'
return Sass::Script::Value::Map.new(file_content)
end
p 'Parse error'
else
p 'The requested file could not be found'
end
end
end
这是我的理解是,YAML::load_file
返回哈希,并且Sass::Script::Value::Map
会将散列作为输入。但是,我碰到下面的错误,我不明白:
C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/sass-3.5.1/lib/sass/script/value/ map.rb:22:在选项= `块 ':未定义的方法`选项=' 为 “
first.value.in.yaml.file
”:字符串(NoMethodError)
使用YAML文件是这样的:
first.value.in.yaml.file:
name: MyName
color: red
什么是这个选项的方法,我应该如何转换yaml文件的内容我nto SASS地图?
(如果你知道如何正确地使用一个文件名没有它得到逃脱,请分享:))
你如何使用'$ ranges'变量? – aristotll
@aristotll,目前我没有使用它。只是任务已经给出了一个错误。虽然我认为它可以取代'$ map:(foo:bar);'定义,然后我可以使用map-get来获取值。 – Neograph734