Синтаксис CSS не для STYLE - PullRequest
0 голосов
/ 01 декабря 2009

Я думаю, что синтаксис CSS и базовые принципы могут быть очень полезны, и не только для стиля. Существуют ли движки PARSE, которые могут работать с CSS-подобными правилами, например, для XML?


Например, мы можем создать что-то вроде фреймворка (да, еще одного), в котором мы определяем страницы в стиле xml (просто пример, может быть, очень глупый или два сложных):

<page id="index" url="/" controller="staticpage" />
<page id="about" url="/" controller="staticpage" action="about" />
<page id="post" url="/post/(\d+)" type="regex" controller="post" class="">
     <param id="1" name="post_id" />
</page>
<page id="post_comment" url="/comment/(\d+)" type="regex" controller="post" action="comment" class="authneeded">
     <param id="1" name="post_id" />
</page>
<page id="post_write" url="/write" type="regex" controller="staticpage" action="write" class="authneeded" />

, а затем напишите для него «CSS»:

* {
     layout: "layout.html"; // default layout
}
*[action=''] {
     action: "index"; // default action
}
#post_write {
     layout: "adminlayout.html";
}
.authneeded {
     redirect: "/";
}
.authneeded:loggedin {  // pseudoclass which is set only if the user logged in. 
                        // (maybe POSTS:loggedin .authneeded to apply only one
                        // pseudoclass)

     redirect: false;   // no, we don't need to redirect then the user logged in
}

Разве это не интересный способ настройки? Более того, мы можем создать скрипт администратора (вдохновленный jquery;)

./admin #about addClass authneeded 
./admin "#post PARAM" attr id param_post

Итак, есть ли движки, которые могут работать с CSS-подобными правилами?

Ответы [ 3 ]

0 голосов
/ 01 декабря 2009

Я бы сказал, что это уже сделано? Ниже приведены некоторые urlmappings в Grails & Django. Это не CSS, но опять же, CSS должен содержать стиль, а не действия, а синтаксис ничем не отличается.

В Grails UrlMapping.groovy может выглядеть примерно так:

class UrlMappings {
    static mappings = {
      "/$controller/$action?/$id?"{
        constraints {
       // apply constraints here
      }
    }
    "/"(controller:"static")
    "500"(view:'/error')
    "/product/" (controller:"myController", action:"show")
    "/old/**" (view:"/index")
    "/uploads/$requestedFile**" (controller:"processFile")
  }
}

В питоне:

urlpatterns = patterns('',
    # Example:
    (r'^$', direct_to_template, {'template': 'pages/front.html' }),
    (r'^about/',direct_to_template, {'template': 'pages/about.html' }),
    (r'^demo/',direct_to_template, {'template':'pages/demo.html'}),
    (r'^accounts/', include('apps.accounts.urls')),
    (r'^forms/', include('apps.forms.urls')),
    (r'^admin/doc/', include('django.contrib.admindocs.urls')),
    (r'^admin/(.*)', admin.site.root),
    {'document_root': settings.MEDIA_ROOT}),
)

Мое личное предпочтение - Grails, что ближе напоминает сценарий, который вы представили. В Grails большая часть URL / действий будет автоматически генерироваться вашим контроллером, поэтому вам не понадобится конфигурация, но она есть в тех случаях, когда мир менее совершенен;).

0 голосов
/ 01 декабря 2009

Я видел демонстрационную версию редактора HTML / CSS для Mac, использующего селекторы CSS для создания разметки HTML. Не помню названия программы, но это кажется очень элегантным и эффективным способом написания HTML.

Чтобы дать вам представление о том, как это работает, допустим, вы написали это в редакторе:

ul#navigation li a.active

И нажмите какую-нибудь волшебную комбинацию клавиш (или просто Введите ), чтобы преобразовать ее в:

<ul id="navigation">
    <li><a class="active"></a></li>
</ul>

Мне кажется, это логичное использование CSS. Использование его для метаданных, как вы описали, может быть полезным, если вы хотите разделить его.

В вашем примере, однако, они очень близки. И установка значений и условий по умолчанию в XML имеет смысл (как и тег param).

0 голосов
/ 01 декабря 2009

Не совсем CSS, но поскольку вы упоминаете XML, всегда есть XSLT , который можно использовать для преобразования XML различными способами. Например, вы можете создать список HTML из простого файла XML и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...