Cで記述された.NETのCSSパーサー#

CSSを解析して@import



url()



を取り出すのに1度かかった。 しかし、.NETの場合、曲がった工芸品の程度はさまざまでした。 ExCSSは最高のライブラリでしたが、メディアクエリなどの些細なことに重点を置いていました。 そこで、私はギャップを埋めることに決めました。



オプションがありました:Chromeを拾う、Firefoxを拾う、左のライブラリを拾う。 品質保証と定期的な更新が必要だったため、最後のオプションは不要になりました。 Chromeでは、CSSとHTMLの構文解析が文法に基づいて生成され、ツールの互換性は言うまでもなく、.NETのさまざまなツールの大まかな研究は落胆しました。 手動で作成されたパーサーを備えたFirefoxのままです。



(...)



結果は、簡潔に言えば、それに供給されるCSSファイルを完全に解析するライブラリーになります。 Firefoxのテストは、変換するには問題が大きすぎることが判明しました。これらはまったく単体テストではありません。JSで記述され、HTML内にあります。 したがって、ライブラリの動作を完全に検証することには問題がありました。 CSSの優れた単体テストの入手先について提案がある場合は、すべての注意を払っています。 ライブラリが少なくとも誰かに役立つことを本当に願っています。問題があれば、私はこれについて知らされます。



利用可能なもの







利用できないもの





エンコード、変更、シリアル化、.NET 4.0およびNuGetパッケージを追加する予定です。 これが発生するまでの時間は、誰かがそれを必要とするかどうかによって異なります。



使用例



 //  CSS,  URL  ( )   URL (   ) CssStyleSheet css = new CssLoader().ParseSheet("h1, h2 { color: #123; }", "http://example.com/sheet.css", "http://example.com/"); Console.WriteLine(css.SheetUri); // http://example.com/sheet.css //   ( ) Console.WriteLine(css.StyleRules.Single().Declaration.Color.Color.R); // 17 Console.WriteLine(css.Rules.OfType<CssStyleRule>.Single().Declaration .Data.Single().Color.R); // 17 Console.WriteLine(css.Rules.OfType<CssStyleRule>.Single().Declaration .GetValue(CssProperty.Color).Color.R); // 17 //      Console.WriteLine(css.StyleRules.Single().SelectorGroups.First().Selectors.Single().Tag); // h1
      
      







プロジェクトの組み立て







免許



Mozilla Public License 。 BSDとGPLを組み合わせます。 ウイルスに似たGPL ですが 、MPLコードを使用して個々の並べ替えファイルにのみ感染します。 他のすべてはライセンスを気にしません。 クローズドソースコードの商用ライセンスを含む、他のライセンスに基づくプロジェクトでの使用に関する制限はありません。



もちろん、より自由で理解しやすいBSD / MITライセンスでライブラリをリリースしたいと思いますが、MPLはほとんどのファイルに「感染」したため、オプションはありませんでした。



まとめ



ライブラリが作成されます。 進化するかどうかは、使用するかどうかによって決まります。 私自身はほんの一部しか必要としません。 大胆なものがあれば、バグ報告、さらにはプルリクエストまでお願いします。



CSSパーサーが必要な場合は、使用方法を記述してください。 さらなる開発パスと優先事項を理解することは非常に重要です。



参照資料





PSライブラリをどのように変換したか、私の目標は何でしたかなど。 -GitHubのReadMeでトリミング。 ハブルは試練について語ろうとする私の試みに感謝しなかったので、事実は乾燥している。 すべてに良い。



All Articles