如何动态检查远程字体图标是否存在?
How do I dynamically check to see if a remote font-icon exists?
我正在将这些 Devicon font icons 用于各种编程语言。
他们没有所有图标,但他们拥有最多。
我想做的是为这个字体库不支持的语言设置一个默认图标。
这些是他们的指示:
<!-- in your header -->
<link rel="stylesheet" href="https://cdn.rawgit.com/konpa/devicon/master/devicon.min.css">
<!-- in your body -->
<i class="devicon-ruby-plain"></i>
所以在我看来,我有这个:
<div class="vote-icon">
<i class="devicon-<%= question.language %>-plain"></i>
</div>
其中 question.language
是用户提交的关于他们问题的语言。
现在,当它生成一个不存在的图标时,它只会在那里留下一个空白 space。
但我不太确定如何在用默认图标替换之前检查图标是否存在。
想法?
试试这个
require 'open-uri'
=> true
f = open("https://cdn.rawgit.com/konpa/devicon/master/devicon.min.css").read
...load entire css file ...
然后你进行搜索
@icon = f["devicon-css3-plain"]
如果@icon 为 nil 表示该图标不再存在
在你的情况下
@icon = f[question.language]
所以我真正做到这一点的唯一方法是解析 Devicons 提供的图标列表。
所以我在辅助方法中手动在数组中创建了一个列表,然后在其中进行了 nil 检查。
所以看起来像这样:
def language_icon(language)
devicons = ["amazonwebservices", "android", "angularjs", "apache", "appcelerator", "apple", "atom", "backbonejs",
"bitbucket", "bootstrap", "bower", "c", "chrome", "codeigniter", "coffeescript", "confluence", "cplusplus", "csharp",
"css3", "d3js", "debian", "django", "docker", "doctrine", "dot-net", "drupal", "erlang", "firefox", "foundation", "gimp",
"git", "github", "gitlab", "go", "grunt", "gulp", "heroku", "html5", "ie10", "illustrator", "inkscape", "java", "javascript",
"jeet", "jetbrains", "jquery", "krakenjs", "laravel", "less", "linux", "meteor", "mongodb", "moodle", "mysql", "nginx",
"nodejs", "nodewebkit", "orale", "photoshop", "php", "phpstorm", "postgresql", "python", "rails", "react", "redhat", "redis",
"ruby", "safari", "sass", "sourcetree", "ssh", "symfony", "travis", "trello", "ubuntu", "vim", "windows8", "wordpress", "yii", "zend"]
if devicons.include?(language)
content_tag(:i, "", class: "devicon-#{language}-plain")
else
content_tag(:i, "", class: "fa fa-diamond")
end
end
这很有魅力。
我希望这对其他人有帮助!
我正在将这些 Devicon font icons 用于各种编程语言。
他们没有所有图标,但他们拥有最多。
我想做的是为这个字体库不支持的语言设置一个默认图标。
这些是他们的指示:
<!-- in your header -->
<link rel="stylesheet" href="https://cdn.rawgit.com/konpa/devicon/master/devicon.min.css">
<!-- in your body -->
<i class="devicon-ruby-plain"></i>
所以在我看来,我有这个:
<div class="vote-icon">
<i class="devicon-<%= question.language %>-plain"></i>
</div>
其中 question.language
是用户提交的关于他们问题的语言。
现在,当它生成一个不存在的图标时,它只会在那里留下一个空白 space。
但我不太确定如何在用默认图标替换之前检查图标是否存在。
想法?
试试这个
require 'open-uri'
=> true
f = open("https://cdn.rawgit.com/konpa/devicon/master/devicon.min.css").read
...load entire css file ...
然后你进行搜索
@icon = f["devicon-css3-plain"]
如果@icon 为 nil 表示该图标不再存在
在你的情况下
@icon = f[question.language]
所以我真正做到这一点的唯一方法是解析 Devicons 提供的图标列表。
所以我在辅助方法中手动在数组中创建了一个列表,然后在其中进行了 nil 检查。
所以看起来像这样:
def language_icon(language)
devicons = ["amazonwebservices", "android", "angularjs", "apache", "appcelerator", "apple", "atom", "backbonejs",
"bitbucket", "bootstrap", "bower", "c", "chrome", "codeigniter", "coffeescript", "confluence", "cplusplus", "csharp",
"css3", "d3js", "debian", "django", "docker", "doctrine", "dot-net", "drupal", "erlang", "firefox", "foundation", "gimp",
"git", "github", "gitlab", "go", "grunt", "gulp", "heroku", "html5", "ie10", "illustrator", "inkscape", "java", "javascript",
"jeet", "jetbrains", "jquery", "krakenjs", "laravel", "less", "linux", "meteor", "mongodb", "moodle", "mysql", "nginx",
"nodejs", "nodewebkit", "orale", "photoshop", "php", "phpstorm", "postgresql", "python", "rails", "react", "redhat", "redis",
"ruby", "safari", "sass", "sourcetree", "ssh", "symfony", "travis", "trello", "ubuntu", "vim", "windows8", "wordpress", "yii", "zend"]
if devicons.include?(language)
content_tag(:i, "", class: "devicon-#{language}-plain")
else
content_tag(:i, "", class: "fa fa-diamond")
end
end
这很有魅力。
我希望这对其他人有帮助!