【问题标题】:Pebble SDK/SimplyJS not honoring the \t characterPebble SDK/SimplyJS 不尊重 \t 字符
【发布时间】:2014-08-11 07:41:11
【问题描述】:

在将数据推送到我的手表(使用 SimplyJS)时,我正在尝试让我的 Pebble 手表遵守转义序列字符 \t,这很有趣。

下面的sn-p是我一直在用的代码:

simply.scrollable(true);
simply.style('small');
simply.fullscreen(true);

var aflLadderUrl = 'http://www.sportal.com.au/feeds/sss/afl_ladder.json';

var ladderContent = '';

ajax({ url: aflLadderUrl, type: 'json'}, 
  function(data) {
   var i = 0;
   while (i < 18){
     ladderContent = ladderContent + data.ladder[i].friendly_name + '\t\t\t' + data.ladder[i].percentage + '\n';
        i++;  
   } 
   simply.text({
     title: 'AFL Ladder',
     body: ladderContent
   });
  }, 
  function() {
   simply.text({
    title: 'AFL Ladder',
    body: 'No internet connection'
   });
  }
);

我目前观察到的是\n 正在被兑现,我可以看到在我的手表上,每一行数据都显示在单独的行上。但是,似乎我的\t 被忽略了,而不是在我的行中插入一个制表符,而是显示零空格(即'my name is' + '\t\t\t' + 'dave' 显示为my name isdave)。

我还尝试仅使用 Pebble SDK 编译一个 Hello World 程序(从 https://github.com/kristofvc/pebble-hello-world/blob/master/src/pebble_hello_world.c 获取代码并在第 11 行打印的字符串中添加几个 \t\t)并且还注意到 SDK尊重 \n 字符,但不尊重 \t 字符(就像我的 SimplyJS 应用一样)。

我的问题是:是否可以让 Pebble(通过 SDK 或 SimplyJS)以与打印到控制台时所期望的相同方式显示选项卡?我知道可能不支持 \t 字符,我可以使用空格代替 \t,但这让我很好奇。

如果您需要更多信息,请告诉我。

提前致谢!

【问题讨论】:

    标签: javascript pebble-watch pebble-sdk


    【解决方案1】:

    因为\t 是一个控制(不可打印)字符,它不对应于任何字形,并且不会始终如一地“显示”,如果有的话。例如,终端仿真器对它的解释与读取 TSV 文件的电子表格软件不同。听起来 Pebble 固件中将字节串转换为显示器上的像素的部分只是忽略了\t,尽管我在 SDK 文档中找不到它。

    如果您使用的是固定宽度的字体,您可以使用空格实现自己的制表符,如下所示:

    var data = {ladder: [
      {friendly_name: "Cool Team", percentage: 80.0},
      {friendly_name: "Really Cool Team", percentage: 80.0},
      {friendly_name: "The Coolest Team of All", percentage: 80.0}
    ]}
    
    var len = function(obj) {return obj.friendly_name.length}
    var longer = function(a, b) {return len(a) > len(b) ? a : b}
    var longestName = len(data.ladder.reduce(longer))
    
    var tab = function(obj) { return new Array(longestName - len(obj) + 2).join(" ") }
    var print = function(obj) { return obj.friendly_name + tab(obj) + obj.percentage }
    
    var ladderContent = data.ladder.map(print).join("\n")
    // Cool Team               80
    // Really Cool Team        80
    // The Coolest Team of All 80
    

    【讨论】:

    • 谢谢,这是我收到的最好的解释。有趣的是,某些字体似乎也不显示换行符,但您的答案似乎很可靠。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 2013-12-24
    • 2016-05-23
    • 2017-03-03
    相关资源
    最近更新 更多