On 25/03/20 11:57 AM, Chris Angelico wrote:
On Wed, Mar 25, 2020 at 9:37 AM DL Neil via Python-list
<python-list@python.org> wrote:

As you observe, the problem with terminal emulators is the extent of
their emulation and the degree of adoption of their 'extended features'!

My concern grows because of the need (I assume) for the URL to be
'clickable', not merely 'complete' and 'unadorned' (no added hyphen
rendering it useless).

A complete URL is clickable. If I print out the string
"https://example.com/"; then it can be right-clicked and copied, or
sent to a browser, or whatever. (Technically I don't need it to be
"clickable", but the terminal emulator has to recognize it as a link.)
FTR I'm using XFCE and xfce4-terminal, although I think everything
applies to most of the popular terminal emulators.

The problem is that a long URL will wrap. So my options are:

1) Let it wrap, violating the indentation
2) Break it, which stops it from being clickable
3) Get help from the terminal emulator

Despite the almost-irresistible urge to prove that I'm a class-y guy
[albeit with a warped sense of humor], I'm warming to the 'partition'
suggestion:
- the output from textwrap.wrap() is a list of strings,
- we are talking about fixed-length lines denominated in characters,
- locating a[ll] URI (from a sub-set of schemes, eg "http", "https",
...) is a well-worn path.

I'm not bothered too much by specific schemes. If a word matches the
regex ^[a-z]+:// then I'll call it a URL.

Thus (simplified to assume the presence of exactly one URI!!!):
- textwrap the first partition
- len( URI )
- it becomes trivial to ascertain if the URL might append the last line
(of the first 'wrapped' partition)
- failing that, the URI must start a new line (by defn)
- if it is 'too long', ie would be wrapped by textwrap, treat it separately,
- conversely, prepend the URI to the third partition,
- text-wrap the third partition,
- assemble the tweet-display.


Hmm. So, basically, manual reimplementation of parts of textwrap. I'll
hold that thought for later... if it's possible to just change the
regex and keep the code unchanged, I'll prefer that, but this is a
possibility. Thanks.


Thought I'd better buy-in some groceries before the country goes into lock-down at midnight, but this problem was amusing me whilst awaiting my turn to get into the store, to the check-out,...


1 what features does the terminal offer when a user 'clicks'?
Is it only applicable to URLs and linked to the web-browser within "Preferred Applications"? Are you able to 'grab' that click from the app? eg MOUSEDOWN*.

2 ultimately, you're on-a-hiding-to-nothing (apologies to non-English-English speakers: means 'no hope'!) given that URLs are defined by, but not length-limited by, RFC. Any 'limits' are applied by implementation/web-browser publishers. Currently in-use editions may vary widely, ie from 2K~64K. Any and all of which would blow terminal line-lengths right out-of-the-water. (that was the thought nagging at the back of my mind earlier - but we've been talking about 'the terminal', ie outside of the limitations of a web-browser environment, so it was insufficiently assertive)


The usual work-around (which I thought was initially/largely motivated by the Tweet's 140-character limit) was to use a URL-shortener - gaining brevity at the expense of double-handling. In reality, as time has gone-by, various ones expressed concerns about (institutionalised) bit-rot and raise security issues ('what am I actually clicking on?').

There was actually a W3C "Working Group Note" that has been released into the public domain (a small surprise to me), detailing "Curie"-s. Sadly, as-yet I don't think any (major) web-browser offers an implementation. (mea culpa?) I seriously doubt that Gnome Terminal has implemented same/similar!


However, may we return to my earlier question: could the app trap a 'click'? In which case, the app could store the actual-URI and provide its own Curie-like URL-shortening service, by substituting some (shorter!) 'click-here' text into the presentation. On the return-journey, in capturing the click, the app could substitute back-again before passing the full-length URI to the web-browser.

QED?
(smirk - Murphy meets "The best laid plans of mice and men...")


(apologies, I don't use Gnome - it didn't/doesn't offer the multi-display control/flexibility I require)


* I've been looking at edX's "Creative Coding" online course. It is aimed at artists and animators learning to code, and thus aims to make the computer draw (instead of counting dollars-and-cents, per the usual course-format). Sadly it is JavaScript-based (the p5.js library). Why do things the easy way? Nah! Instead, I've been investigating a 'corner' of Python with which I have had no contact to date. The Pygame library offers a drawing "canvas", hence it gaining my attention. Plus, without the complication of a full-fat GUI, (I think) it will present text AND allow keyboard and mouse-key trapping - all from the comfort and glory of a terminal-based Python program...

Have you ever poked into this dark corner of the pip-y-verse?
Would you like a PoC (I'll call it 'coursework')? (tomorrow)


Web.Refs:
https://www.w3.org/TR/2010/NOTE-curie-20101216/
https://www.pygame.org/docs (site under maintenance at this moment)
https://www.edx.org/course/creative-coding
--
Regards =dn
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to