Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Zmiana budowania nazwy przypisów #4

Open
Eccenux opened this issue Jun 29, 2024 · 0 comments
Open

Zmiana budowania nazwy przypisów #4

Eccenux opened this issue Jun 29, 2024 · 0 comments

Comments

@Eccenux
Copy link

Eccenux commented Jun 29, 2024

Cześć, trochę ostatnio się bawiłem gadżetem i samą witryną pretty-ref i ogólnie działa dobrze, ale myślę, że warto zmienić nieco reguły budowania nazw przypisów:

  1. Nazwy "^:[0-9]+$" powinno traktować jako brak nazwy (i nadać nową nazwę). Pochodzą one z VE.
  2. Nazwy "^[a-z]{2}:[0-9]{1-3}$" powinno również traktować jako brak nazwy. Konkretnie nazwy dd:1 pochodzą z mojego narzędzia do de-duplikacji przypisów.
  3. Budowa przypisu w skrócie: Autorstwo; Skrócony tytuł; Możliwie pełna data; ew. strona/kolumna ; dodatki unikatowści

Jakby co mogę coś spróbować sprototypować, napisać jakieś testy. Przy czym nie jestem pewien jaką tu masz strukturę i zwyczaje, więc nie chcę się narzucać :)

Przykłady przypisów

Z szablonów:

Z artykułów:

Budowa nazwy przypisu

Format nazwy

Zamiast nazw typu "Eric Berger2024", "Eric Berger20242" dla:

{{cytuj |autor = Eric Berger |tytuł = SpaceX discloses cause of Starship anomalies as it clears an FAA hurdle 
|data = 2024-02-26 |data dostępu = 2024-06-10
|opublikowany = Ars Technica |url = https://arstechnica.com/space/2024/02/faa-closes-starship-inquiry-and-spacex-details-causes-of-november-accidents/ |język = en}}
{{cytuj |autor = Eric Berger |tytuł = The next Starship mission has a tentative launch date: March 14
|data = 2024-03-06 |data dostępu = 2024-06-19
|opublikowany = Ars Technica |url = https://arstechnica.com/space/2024/03/the-next-starship-mission-has-a-tentative-launch-date-march-14/ |język = en}}</ref>

Proponowałbym:
Eric Berger; SpaceX discloses cause of Starship anomalies; 2024-02-26
Albo jeśli nie byłoby autora:
Ars Technica; SpaceX discloses cause of Starship anomalies; 2024-02-26

Czyli format podstawowy:
Autorstwo; Skrócony tytuł; Pełna data

Jeśli to nie wystarczyło (a dzienna data i tytuł powinny wystarczyć), to na wszelki wypadek może być numer, ale po średniku:
Autorstwo; Skrócony tytuł; Pełna data; nr 2

Dla książek i czasopism:
Autorstwo; Skrócony tytuł; Pełna data; s. 123

Tutaj pełna data to "rok", przynajmniej dla szablonów Cytuj pismo/książkę.

Pseudokod budowania nazwy w uproszczeniu

var name = "";
// cz. 1. oznaczenie odpowiedzialności (autorstwo itp)
var starter = "";
// parametr "autor" tudzież p("nazwisko")+" "+p("imię"), zależnie jak tam w szablonie jest wypełnione
if (!author.isBlank()) {
 // Benoit Viollet, Fabrizio Andreelli → Benoit Viollet
 // Lech Zdanowicz – redaktor naczelny → Lech Zdanowicz
  starter = removeLinks(author.replace("([,;.]| [\-–]).+", ""));
}
// "opublikowany", albo "czasopismo", albo "wydawca"
if (starter.isEmpty() && !publisher.isBlank()) {
  starter = removeLinks(publisher);
}
if (!starter.isBlank()) {
  name = starter + "; ";
}
// cz. 2. tytuł
var title = "";
// tu dla czasopism 
if (!title.isBlank()) {
  name = trimWords(title, 50) + "; ";
}
// cz.3 pełna data
if (!title.isBlank()) {
  name = data + "; ";
}
// cz.4 opcjonalna strona ("s"/"strony")
// i potem unikatowość... (to zakładam, że już jest jakoś zrobione)

Przez funkcję removeLinks mam na myśli usuwanie nawiasów kwadratowych. Np. [[Joe Bloggs]] na Joe Bloggs, czy [[Newsweek|Newsweek Polska]] na Newsweek Polska.

Jeśli chodzi o trimWords, to zrobiłem od razu działający przykład, żeby było widać:

public class Main {
	public static String trimWords(String words, int limit) {
		// Przytnij wstępnie
		if (words.length() > limit) {
			words = words.substring(0, limit);
		}
		
		// Utnij do ostatniej spacji
		int lastSpaceIndex = words.lastIndexOf(" ");
		if (lastSpaceIndex != -1) {
			words = words.substring(0, lastSpaceIndex);
		}
		return words;
	}

	public static void main(String[] args) {
		String words = "Przykładowy tytuł, który ma być przycięty do 60 znaków i potem ucięty";
		System.out.println("'"+trimWords(words, 60)+"'");
		// wynik: 'Przykładowy tytuł, który ma być przycięty do 60'
	}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant