Автоматическая разметка кода - PullRequest
2 голосов
/ 16 сентября 2011

Существует ли инструмент (похожий на разметку здесь, в StackOverflow), который преобразует код (на основе синтаксиса и ключевых слов) в код с разметкой?Другими словами, возьмите пятно кода и добавьте соответствующие теги и стили , чтобы оно выглядело все в цвете (и может быть с отступом)?

В частности, мне бы хотелось что-тоспецифический язык (или знание языка) по крайней мере для C # и SQL.Это может быть плагин для WordPress или просто форматер , в который я мог бы разместить свой код, а затем скопировать вставку в WordPress (или в другом месте. Переносимость хороша).

Ответы [ 2 ]

2 голосов
/ 30 июня 2013

Vim - замечательный инструмент для этого. Вам не нужно использовать его в качестве редактора (хотя каждый серьезный разработчик должен подумать об этом, но я отвлекся), вы можете использовать его как чисто синтаксически-ориентированный процессор кода в HTML.

Например, возьмем этот скрипт Python3 (в этом листинге синтаксис обозначен StackOverflow ):

'Get geocode data from Google'

# See https://developers.google.com/maps/documentation/geocoding

import urllib, urllib2
import json

params = {'address': "1600 Amphitheatre Parkway, Mountain View, CA",
          'sensor': 'false'}

base_url = 'http://maps.googleapis.com/maps/api/geocode/json'
url = base_url + '?' + urllib.urlencode(params)

reply = json.loads(urllib2.urlopen(url).read() )
print json.dumps(reply, sort_keys=True, indent=4, separators=(',', ': '))

Использование Vim цветовая схема Свет Этот метод производит:

<code><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>~/Projects/google/geocoding.py.html</title>
<meta name="Generator" content="Vim/7.3">
<meta name="plugin-version" content="vim7.3_v10">
<meta name="syntax" content="python">
<meta name="settings" content="use_css,expand_tabs">
<style type="text/css">
<!--
pre { font-family: monospace; color: #000000; background-color: #c7c7c7; }
body { font-family: monospace; color: #000000; background-color: #c7c7c7; }
.Constant { color: #bd00bd; }
.Normal { color: #000000; background-color: #c7c7c7; }
.Statement { color: #191970; font-weight: bold; }
.Comment { color: #005500; }
.String { color: #8b4500; }
-->
</style>
</head>
<body>
<pre>
<span class="String">'Get geocode data from Google'</span>

<span class="Comment"># See <a href="https://developers.google.com/maps/documentation/geocoding">https://developers.google.com/maps/documentation/geocoding</a></span>

<span class="Statement">import</span> urllib, urllib2
<span class="Statement">import</span> json

params = {<span class="String">'address'</span>: <span class="String">&quot;1600 Amphitheatre Parkway, Mountain View, CA&quot;</span>,
          <span class="String">'sensor'</span>: <span class="String">'false'</span>}

base_url = <span class="String">'<a href="http://maps.googleapis.com/maps/api/geocode/json">http://maps.googleapis.com/maps/api/geocode/json</a>'</span>
url = base_url + <span class="String">'?'</span> + urllib<span class="Normal">.</span>urlencode(params)

reply = json<span class="Normal">.</span>loads(urllib2<span class="Normal">.</span>urlopen(url)<span class="Normal">.</span>read() )
print json<span class="Normal">.</span>dumps(reply, sort_keys=<span class="Statement">True</span>, indent=<span class="Constant">4</span>, separators=(<span class="String">','</span>, <span class="String">': '</span>))

Обратите внимание, что каждому элементу синтаксиса присваивается цвет в разделе стилей CSS, который можно настроить в самом html, если вы не хотите использовать цветовую схему Vim .

Вот что вы увидите в своем браузере. Я вырезал это как изображение, чтобы избежать изменения цвета с StackOverflow :

HTML syntax highlighting

Вот как это сделать:

  1. Установите графический интерфейс Vim. Официальная Vim страница загрузки поможет вам начать работу. Если вы не можете использовать графический интерфейс, надежда не пропала, я прокомментирую этот случай ниже.
  2. Выберите синтаксическую раскраску, которую вы хотите. Я использую эту страницу для выбора и загрузки цветовых схем. Вы помещаете файлы цветовой схемы в каталог ~/.vim/colors или для Windows в %USERPROPFILE%/vimfiles/colors.
  3. Старт Vim .
  4. Загрузите исходный код, для которого вы хотите использовать синтаксическую разметку. Это делается с помощью команды :e <file path>, где <file path> - это местоположение исходного файла. Vim GUI также предоставит команды меню для открытия файла, вы можете предпочесть сделать это таким образом, чтобы вы могли просматривать файловую систему.
  5. Загрузите вашу цветовую схему. Введите :color <name>, где <name> - это цветовая схема, сохраненная на шаге 2, без расширения .vim. Например, я использую :color synic для загрузки цветовой схемы в ~/.vim/colors/synic.vim. (В Vim «:» переводит вас в «командный режим». Когда вы вводите команду и нажимаете <return>, вы возвращаетесь в так называемый «нормальный режим».)
  6. Скажите Vim , чтобы сгенерировать html с помощью команды :TOhtml. Откроется новое окно, и вы увидите HTML-разметку. Обязательно используйте правильную прописную букву при выполнении _Vim_commands.
  7. Ваш курсор должен находиться в новом окне с разметкой. Сохраните это, используя меню файлов графического интерфейса, или введите команду :w <file path>

Дополнительно, если вы хотите, чтобы номера строк отображались в сгенерированном HTML, используйте команду :set number перед :TOhtml.

Если вы не видите раскраски синтаксиса после установки цветовой схемы, попробуйте команду :syntax on. Если вы выполняете раскраску синтаксиса для языка или текстового формата, который vim не распознает, вы, вероятно, сможете найти файлы синтаксиса для этого языка в Интернете. Подробная информация о том, как установить файлы синтаксиса, выходит за рамки того, о чем я хочу написать здесь, но у вашей любимой поисковой системы есть много тем. Попробуйте выполнить поиск, например vim <mylang> syntax. Чтобы увидеть, какой язык Vim считает, что у вас есть, используйте команду ": set ft?".

Если, как и я, вы предпочитаете использовать форму терминала Vim, есть еще кое-что, что стоит рассмотреть. Вы не можете создавать цвета, которые терминал не поддерживает. Большинство терминальных приложений предоставляют 2, 16 или 256 цветов. Получите Vim для вывода в 256 цветах (если это еще не сделано), используя инструкции здесь . Не все цветовые схемы хорошо работают на терминалах из коробки, но инструкции по на этой странице существенно помогают, хотя они написаны для более опытного пользователя Vim . Рекомендуется запустить учебник Vim (:help tutorial), если вам нужно сделать больше, чем я обрисовал в общих шагах.

1 голос
/ 16 сентября 2011

Мне лично нравится этот скрипт: http://softwaremaniacs.org/soft/highlight/en/

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