小编web*_*eat的帖子

获取Sublime Text 3上的所有范围名称

我正在为ST3创建一个插件,需要所有已定义范围的列表.我知道命中ctrl+alt+shift+p显示状态栏中的当前范围,但我无法为每个文件扩展名执行此操作.

编辑:

除了简单的.tmLanguage文件,我正在从内部提取.sublime-package文件和读取.tmLanguage文件.这增加source.php了列表中的一些条目.但 source.python仍然缺少!

实际上,python代码是:(这是Python 3.3)

import sublime, sublime_plugin, os, subprocess, glob, tempfile, plistlib
from zipfile import ZipFile

def scopes_inside(d):
    result = []
    for k in d.keys():
        if k == 'scopeName':
            result = result + [ s.strip() for s in d[k].split(',') ]
        elif isinstance(d[k], dict):
            result = result + scopes_inside(d[k])
    return result

scopes = set()
for x in os.walk(sublime.packages_path() + '/..'):
    for f in glob.glob(os.path.join(x[0], '*.tmLanguage')):
        for …
Run Code Online (Sandbox Code Playgroud)

python sublimetext3 sublime-text-plugin

9
推荐指数
1
解决办法
2356
查看次数

在PHP中分别输出两行到控制台

我写了这个小的PHP脚本,从0到9计数,同时也显示了计数数字的总和.

<?php
$sum = 0;
$line = '';
for ($i=0; $i < 10; $i++) {
    $sum += $i;
    echo str_repeat(chr(8), strlen($line)); // cleaning the line
    $line = "Counter: {$i} | Total: {$sum}";
    echo $line; // Outputing the new line
    sleep(1);
}
echo "\n";
Run Code Online (Sandbox Code Playgroud)

如您所见,在每次迭代中,我正在清理该行(8是ASCII代码backspace)并在同一行显示新文本.

这样可以正常工作,但现在我想在两条不同的行中显示Count和Total,并以与我用一行相同的方式设置两条线的动画.所以我尝试了这段代码:

<?php
$sum = 0;
$line = '';
for ($i=0; $i < 10; $i++) {
    $sum += $i;
    echo str_repeat(chr(8), strlen($line)); // cleaning the line
    $line = "Counter: {$i}\nTotal: {$sum}";
    echo $line; …
Run Code Online (Sandbox Code Playgroud)

php command-line-interface

8
推荐指数
1
解决办法
103
查看次数

使用Git和Composer处理PHP框架组件之间依赖关系的最佳方法

背景

我正在用PHP开发一个框架.我首先将每个组件分开制作,以便可以独立于框架使用.

创建四个库A,B,CD后:

  • A没有依赖关系

  • BC需要A

  • D需要A,BC.

现在我在发布一个库的新版本时遇到了一些问题,我可能不得不改变其他库的依赖关系,并且必须为它们发布新版本.例如:A的新版本意味着B,CD的新版本.

我看了像SymfonyLaravel这样的其他框架是如何解决这个问题的.我了解到他们正在使用subtreeGit的replace功能和Composer 的功能.它的工作原理如下:

  • 每个组件都在自己的只读存储库中 composer.json

  • 每个组件都可以需要其他组件,但不需要replace它们.

  • 框架存储库用于subtrees包括所有组件.所以不需要require他们使用作曲家.但它应该是require所有依赖项(因为这不再由Compser处理).

  • 框架replace的所有组件.

我也注意到了

  • 组件存储库仅包含源代码(无单元测试!)

  • Laravel使组件Contracts只是为了存储所有组件的所有交互,每个组件都需要它.

问题

  1. 我对Laravel和Symfony如何解决这个问题的解释是正确的吗?

  2. 我是否真的必须从组件存储库中删除测试并将它们放在框架中?

  3. 如果是,那么只想使用单个组件的人如何确保它通过测试而不管整个框架是否通过了测试?

  4. 我是否必须确保所有组件依赖项是兼容的并且在框架中手动需要它们composer.json

  5. 为接口提供组件有什么意义?这不能单独使用!

  6. 有没有更好的方法来解决这个问题?

PS:这里是A,B,C …

php git dependencies frameworks composer-php

6
推荐指数
1
解决办法
522
查看次数

仅从 cin 读取一个字符

读取时,std::cin即使我只想读取一个字符。它将等待用户插入任意数量的字符并点击Enter继续!

我想逐个字符读取字符,并在用户在终端中键入时为每个字符执行一些说明。

例子

如果我运行这个程序并输入abcd那么Enter结果将是

abcd
abcd
Run Code Online (Sandbox Code Playgroud)

但我希望它是:

aabbccdd
Run Code Online (Sandbox Code Playgroud)

这是代码:

int main(){
    char a;
    cin >> noskipws >> a;
    while(a != '\n'){
        cout << a;
        cin >> noskipws >> a;
    }
}
Run Code Online (Sandbox Code Playgroud)

请问怎么做?

c++ cin char

1
推荐指数
3
解决办法
2万
查看次数