【发布时间】:2012-07-05 17:09:27
【问题描述】:
背景
我想启用从右到左和从左到右的语言环境,但我只想维护一组样式表。
这个想法是调用application-rtl.css 将提供application.css 的rtl 转换版本(使用r2)。
此功能有两个用例:
- 开发:动态服务,即时转换
- 生产:让预编译生成 -rtl 版本(扩展 rake 资产:预编译任务)
到目前为止,我已经成功地实现了一个 RTLConverter,它使我能够提供所有转换为 RTL 的样式表,而无需触及它们:
config/initializers/rtl_converter.rb:
require "r2"
require "tilt"
class RTLConverter < Tilt::Template
def prepare; end
def evaluate(context, locals, &block)
R2.r2 @data
end
end
Rails.application.assets.register_preprocessor 'text/css', RTLConverter
您也可以将此作为 sprocket 的引擎来实现,以仅转换具有 .rtl 扩展名的文件:
Rails.application.assets.register_engine 'rtl', RTLConverter
我的问题
如何连接到资产管道以便:
- 使用名称后缀“-rtl”提供任何样式表的即时转换版本(查找不带后缀的文件并提供其转换版本)?
- 在预编译期间使用所有样式表的名称后缀“-rtl”创建转换后的副本
注意事项:
转换器不能与 sass 引擎一起使用,但使用 less 似乎可以正常工作。它已被应用到一个基于 twitter-bootstrap 的网站上,效果非常好。
转换器尚未在生产中进行测试。
如果我能找到解决这个问题的好方法,我打算创建和维护一个 gem 并将其回馈给社区。p>
【问题讨论】:
标签: ruby-on-rails asset-pipeline right-to-left sprockets