⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 use2dot

📁 MSYS在windows下模拟了一个类unix的终端
💻
字号:
#!/bin/sh# aside from this initial boilerplate, this is actually -*- scheme -*- codemain='(module-ref (resolve-module '\''(scripts use2dot)) '\'main')'exec ${GUILE-guile} -l $0 -c "(apply $main (cdr (command-line)))" "$@"!#;;; use2dot --- Display module dependencies as a DOT specification;; 	Copyright (C) 2001 Free Software Foundation, Inc.;;;; This program is free software; you can redistribute it and/or;; modify it under the terms of the GNU General Public License as;; published by the Free Software Foundation; either version 2, or;; (at your option) any later version.;;;; This program is distributed in the hope that it will be useful,;; but WITHOUT ANY WARRANTY; without even the implied warranty of;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU;; General Public License for more details.;;;; You should have received a copy of the GNU General Public License;; along with this software; see the file COPYING.  If not, write to;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330,;; Boston, MA 02111-1307 USA;;; Author: Thien-Thi Nguyen;;; Commentary:;; Usage: use2dot [OPTIONS] [FILE ...];; Display to stdout a DOT specification that describes module dependencies;; in FILEs.;;;; A top-level `use-modules' form or a `:use-module' `define-module'-component;; results in a "solid" style edge.;;;; An `:autoload' `define-module'-component results in a "dotted" style edge;; with label "N" indicating that N names are responsible for triggering the;; autoload.  [The "N" label is not implemented.];;;; A top-level `load' or `primitive-load' form results in a a "bold" style;; edge to a node named with either the file name if the `load' argument is a;; string, or "[computed in FILE]" otherwise.;;;; Options:;;  -m, --default-module MOD -- Set MOD as the default module (for top-level;;                              `use-modules' forms that do not follow some;;                              `define-module' form in a file).  MOD should be;;                              be a list or `#f', in which case such top-level;;                              `use-modules' forms are effectively ignored.;;                              Default value: `(guile-user)'.;;; Code:(define-module (scripts use2dot)  :autoload (ice-9 getopt-long) (getopt-long)  :use-module ((srfi srfi-13) :select (string-join))  :use-module ((scripts frisk)               :select (make-frisker edge-type edge-up edge-down))  :export (use2dot))(define *default-module* '(guile-user))(define (q s)                           ; quote  (format #f "~S" s))(define (vv pairs)                      ; => ("var=val" ...)  (map (lambda (pair)         (format #f "~A=~A" (car pair) (cdr pair)))       pairs))(define (>>header)  (format #t "digraph use2dot {\n")  (for-each (lambda (s) (format #t "  ~A;\n" s))            (vv `((label . ,(q "Guile Module Dependencies"))                  ;;(rankdir . LR)                  ;;(size . ,(q "7.5,10"))                  (ratio . fill)                  ;;(nodesep . ,(q "0.05"))                  ))))(define (>>body edges)  (for-each   (lambda (edge)     (format #t "  \"~A\" -> \"~A\"" (edge-down edge) (edge-up edge))     (cond ((case (edge-type edge)              ((autoload) '((style . dotted) (fontsize . 5)))              ((computed) '((style . bold)))              (else #f))            => (lambda (etc)                 (format #t " [~A]" (string-join (vv etc) ",")))))     (format #t ";\n"))   edges))(define (>>footer)  (format #t "}"))(define (>> edges)  (>>header)  (>>body edges)  (>>footer))(define (use2dot . args)  (let* ((parsed-args (getopt-long (cons "use2dot" args)    ;;; kludge                                   '((default-module                                       (single-char #\m) (value #t)))))         (=m (option-ref parsed-args 'default-module *default-module*))         (scan (make-frisker `(default-module . ,=m)))         (files (option-ref parsed-args '() '())))    (>> (reverse ((scan files) 'edges)))))(define main use2dot);;; use2dot ends here

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -